diff --git a/test/EFCore.Design.Tests/Design/DbContextActivatorTest.cs b/test/EFCore.Design.Tests/Design/DbContextActivatorTest.cs index f0e8f6727b0..4ef587e9d72 100644 --- a/test/EFCore.Design.Tests/Design/DbContextActivatorTest.cs +++ b/test/EFCore.Design.Tests/Design/DbContextActivatorTest.cs @@ -8,40 +8,24 @@ public class DbContextActivatorTest [ConditionalFact] public void CreateInstance_works() { - EF.IsDesignTime = false; - - var result = DbContextActivator.CreateInstance(typeof(TestContext)); - - Assert.IsType(result); - - Assert.True(EF.IsDesignTime); + Assert.IsType(DbContextActivator.CreateInstance(typeof(TestContext))); } [ConditionalFact] public void CreateInstance_with_arguments_works() { - EF.IsDesignTime = false; - - var result = DbContextActivator.CreateInstance( + Assert.IsType(DbContextActivator.CreateInstance( typeof(TestContext), null, null, - new[] { "A", "B" }); - - Assert.IsType(result); - - Assert.True(EF.IsDesignTime); + new[] { "A", "B" })); } private class TestContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder options) - { - Assert.True(EF.IsDesignTime); - - options + => options .EnableServiceProviderCaching(false) .UseInMemoryDatabase(nameof(DbContextActivatorTest)); - } } } diff --git a/test/EFCore.Design.Tests/Design/DesignTimeFlagTest.cs b/test/EFCore.Design.Tests/Design/DesignTimeFlagTest.cs new file mode 100644 index 00000000000..bce40e58d69 --- /dev/null +++ b/test/EFCore.Design.Tests/Design/DesignTimeFlagTest.cs @@ -0,0 +1,74 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Microsoft.EntityFrameworkCore.Design; + +// The tests interact with global state and should never be run in parallel +[Collection("DesignTimeFlagTest")] +public class DesignTimeFlagTest +{ + [ConditionalFact] + public void Operations_have_design_time_flag_set() + { + EF.IsDesignTime = false; + + var handler = new OperationResultHandler(); + + new MockOperation(handler, () => + { + Assert.True(EF.IsDesignTime); + return "Twilight Sparkle"; + }); + + Assert.False(EF.IsDesignTime); + Assert.Equal("Twilight Sparkle", handler.Result); + } + + [ConditionalFact] + public void CreateInstance_sets_design_time_flag() + { + EF.IsDesignTime = false; + + Assert.IsType(DbContextActivator.CreateInstance(typeof(TestContext))); + + Assert.True(EF.IsDesignTime); + } + + [ConditionalFact] + public void CreateInstance_with_arguments_sets_design_time_flag() + { + EF.IsDesignTime = false; + + Assert.IsType(DbContextActivator.CreateInstance( + typeof(TestContext), + null, + null, + new[] { "A", "B" })); + + Assert.True(EF.IsDesignTime); + } + + private class TestContext : DbContext + { + protected override void OnConfiguring(DbContextOptionsBuilder options) + { + Assert.True(EF.IsDesignTime); + + options + .EnableServiceProviderCaching(false) + .UseInMemoryDatabase(nameof(DbContextActivatorTest)); + } + } + + private class MockOperation : OperationExecutor.OperationBase + { + public MockOperation(IOperationResultHandler resultHandler, Func action) + : base(resultHandler) + => Execute(action); + } +} + +[CollectionDefinition("DesignTimeFlagTest", DisableParallelization = true)] +public class DesignTimeFlagTestCollection +{ +} diff --git a/test/EFCore.Design.Tests/Design/OperationExecutorTest.cs b/test/EFCore.Design.Tests/Design/OperationExecutorTest.cs index 7794f8062e7..1b9e1963b31 100644 --- a/test/EFCore.Design.Tests/Design/OperationExecutorTest.cs +++ b/test/EFCore.Design.Tests/Design/OperationExecutorTest.cs @@ -17,24 +17,6 @@ public void Ctor_validates_arguments() public class OperationBaseTests { - [ConditionalFact] - public void Operations_have_design_time_flag_set() - { - EF.IsDesignTime = false; - - var handler = new OperationResultHandler(); - var result = "Twilight Sparkle"; - - new MockOperation(handler, () => - { - Assert.True(EF.IsDesignTime); - return result; - }); - - Assert.False(EF.IsDesignTime); - Assert.Equal(result, handler.Result); - } - [ConditionalFact] public void Execute_catches_exceptions() {