From 06d845e3cad41192bea594b7d42f968e7861c304 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Sun, 17 May 2020 17:34:09 +0800 Subject: [PATCH 1/5] Define CollectionFixture in each test project. Because: xUnit collection definitions must be in the same assembly as the test that uses them. --- ...eSwitchEntityFrameworkCoreToMongoDbStep.cs | 55 +++++++++++++++---- .../MyProjectNameApplicationCollection.cs | 11 ++++ .../Samples/SampleAppServiceTests.cs | 12 ++++ .../MyProjectNameDomainCollection.cs | 11 ++++ .../Samples/SampleDomainTests.cs | 1 + ...rojectNameEntityFrameworkCoreCollection.cs | 10 ++++ ...ntityFrameworkCoreCollectionFixtureBase.cs | 10 ++++ ...MyProjectNameEntityFrameworkCoreFixture.cs | 12 ++++ .../Samples/SampleRepositoryTests.cs | 1 + .../MongoDb/MongoTestCollection.cs | 10 ---- .../MongoDb/MyProjectNameMongoCollection.cs | 10 ++++ ...ProjectNameMongoDbCollectionFixtureBase.cs | 10 ++++ ...ture.cs => MyProjectNameMongoDbFixture.cs} | 4 +- .../MongoDb/MyProjectNameMongoDbTestModule.cs | 8 +-- .../MongoDb/Samples/SampleRepositoryTests.cs | 2 +- .../MyProjectNameTestConsts.cs | 7 +++ .../MyProjectNameWebCollection.cs | 11 ++++ .../Pages/Index_Tests.cs | 1 + 18 files changed, 157 insertions(+), 29 deletions(-) create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationCollection.cs create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainCollection.cs create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreCollection.cs create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreCollectionFixtureBase.cs create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreFixture.cs delete mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MongoTestCollection.cs create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoCollection.cs create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbCollectionFixtureBase.cs rename templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/{MongoDbFixture.cs => MyProjectNameMongoDbFixture.cs} (85%) create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestConsts.cs create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebCollection.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs index ca290ab83f..b0a778c323 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs @@ -16,7 +16,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App "MongoDB" ); - ChangeModuleDependency( + ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs", "MyCompanyName.MyProjectName.EntityFrameworkCore", @@ -39,7 +39,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App "MongoDB" ); - ChangeModuleDependency( + ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs", "MyCompanyName.MyProjectName.EntityFrameworkCore", @@ -62,7 +62,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App "MongoDB" ); - ChangeModuleDependency( + ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs", "MyCompanyName.MyProjectName.EntityFrameworkCore", @@ -85,7 +85,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App "MongoDB" ); - ChangeModuleDependency( + ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs", "MyCompanyName.MyProjectName.EntityFrameworkCore", @@ -108,7 +108,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App "MongoDB" ); - ChangeModuleDependency( + ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs", "MyCompanyName.MyProjectName.EntityFrameworkCore", @@ -131,7 +131,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App "MongoDB.Tests" ); - ChangeModuleDependency( + ChangeNamespaceAndKeyword( context, "/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainTestModule.cs", "MyCompanyName.MyProjectName.EntityFrameworkCore", @@ -139,6 +139,37 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App "MyProjectNameEntityFrameworkCoreTestModule", "MyProjectNameMongoDbTestModule" ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainCollection.cs", + "MyCompanyName.MyProjectName.EntityFrameworkCore", + "MyCompanyName.MyProjectName.MongoDB", + "MyProjectNameEntityFrameworkCoreCollectionFixtureBase", + "MyProjectNameMongoDbCollectionFixtureBase" + ); + + //MyCompanyName.MyProjectName.Application.Tests + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationCollection.cs", + "MyCompanyName.MyProjectName.EntityFrameworkCore", + "MyCompanyName.MyProjectName.MongoDB", + "MyProjectNameEntityFrameworkCoreCollectionFixtureBase", + "MyProjectNameMongoDbCollectionFixtureBase" + ); + + //MyCompanyName.MyProjectName.Web.Tests + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebCollection.cs", + "MyCompanyName.MyProjectName.EntityFrameworkCore", + "MyCompanyName.MyProjectName.MongoDB", + "MyProjectNameEntityFrameworkCoreCollectionFixtureBase", + "MyProjectNameMongoDbCollectionFixtureBase" + ); } private void ChangeProjectReference( @@ -165,13 +196,13 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App throw new ApplicationException($"Could not find the '{oldReference}' reference in the project '{targetProjectFilePath}'!"); } - private void ChangeModuleDependency( + private void ChangeNamespaceAndKeyword( ProjectBuildContext context, string targetModuleFilePath, string oldNamespace, string newNamespace, - string oldModuleName, - string newModuleName) + string oldKeyword, + string newKeyword) { var file = context.GetFile(targetModuleFilePath); @@ -185,9 +216,9 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { lines[i] = $"using {newNamespace};"; } - else if (lines[i].Contains(oldModuleName)) + else if (lines[i].Contains(oldKeyword)) { - lines[i] = lines[i].Replace(oldModuleName, newModuleName); + lines[i] = lines[i].Replace(oldKeyword, newKeyword); } } @@ -216,4 +247,4 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App throw new ApplicationException("Could not find the 'Default' connection string in appsettings.json file!"); } } -} \ No newline at end of file +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationCollection.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationCollection.cs new file mode 100644 index 0000000000..ea5a2de740 --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationCollection.cs @@ -0,0 +1,11 @@ +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using Xunit; + +namespace MyCompanyName.MyProjectName +{ + [CollectionDefinition(MyProjectNameTestConsts.CollectionDefinitionName)] + public class MyProjectNameApplicationCollection : MyProjectNameEntityFrameworkCoreCollectionFixtureBase + { + + } +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/Samples/SampleAppServiceTests.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/Samples/SampleAppServiceTests.cs index 08bab7e852..4d36d6cdc2 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/Samples/SampleAppServiceTests.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/Samples/SampleAppServiceTests.cs @@ -10,6 +10,7 @@ namespace MyCompanyName.MyProjectName.Samples * (like IIdentityUserAppService here). * Only test your own application services. */ + [Collection(MyProjectNameTestConsts.CollectionDefinitionName)] public class SampleAppServiceTests : MyProjectNameApplicationTestBase { private readonly IIdentityUserAppService _userAppService; @@ -29,5 +30,16 @@ namespace MyCompanyName.MyProjectName.Samples result.TotalCount.ShouldBeGreaterThan(0); result.Items.ShouldContain(u => u.UserName == "admin"); } + + [Fact] + public async Task Initial_Data_Should_Contain_Admin_User2() + { + //Act + var result = await _userAppService.GetListAsync(new GetIdentityUsersInput()); + + //Assert + result.TotalCount.ShouldBeGreaterThan(0); + result.Items.ShouldContain(u => u.UserName == "admin"); + } } } diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainCollection.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainCollection.cs new file mode 100644 index 0000000000..81a68dd7f8 --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainCollection.cs @@ -0,0 +1,11 @@ +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using Xunit; + +namespace MyCompanyName.MyProjectName +{ + [CollectionDefinition(MyProjectNameTestConsts.CollectionDefinitionName)] + public class MyProjectNameDomainCollection : MyProjectNameEntityFrameworkCoreCollectionFixtureBase + { + + } +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/Samples/SampleDomainTests.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/Samples/SampleDomainTests.cs index 26f2b14912..e39a6148a6 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/Samples/SampleDomainTests.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/Samples/SampleDomainTests.cs @@ -10,6 +10,7 @@ namespace MyCompanyName.MyProjectName.Samples * (like IdentityUserManager here). * Only test your own domain services. */ + [Collection(MyProjectNameTestConsts.CollectionDefinitionName)] public class SampleDomainTests : MyProjectNameDomainTestBase { private readonly IIdentityUserRepository _identityUserRepository; diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreCollection.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreCollection.cs new file mode 100644 index 0000000000..858709c1c9 --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreCollection.cs @@ -0,0 +1,10 @@ +using Xunit; + +namespace MyCompanyName.MyProjectName.EntityFrameworkCore +{ + [CollectionDefinition(MyProjectNameTestConsts.CollectionDefinitionName)] + public class MyProjectNameEntityFrameworkCoreCollection : ICollectionFixture + { + + } +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreCollectionFixtureBase.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreCollectionFixtureBase.cs new file mode 100644 index 0000000000..bba037d413 --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreCollectionFixtureBase.cs @@ -0,0 +1,10 @@ +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using Xunit; + +namespace MyCompanyName.MyProjectName.EntityFrameworkCore +{ + public class MyProjectNameEntityFrameworkCoreCollectionFixtureBase : ICollectionFixture + { + + } +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreFixture.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreFixture.cs new file mode 100644 index 0000000000..120c141972 --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreFixture.cs @@ -0,0 +1,12 @@ +using System; + +namespace MyCompanyName.MyProjectName.EntityFrameworkCore +{ + public class MyProjectNameEntityFrameworkCoreFixture : IDisposable + { + public void Dispose() + { + + } + } +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs index 0175e202b1..15fd991d77 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs @@ -14,6 +14,7 @@ namespace MyCompanyName.MyProjectName.EntityFrameworkCore.Samples * (like default AppUser repository IRepository here). * Only test your custom repository methods. */ + [Collection(MyProjectNameTestConsts.CollectionDefinitionName)] public class SampleRepositoryTests : MyProjectNameEntityFrameworkCoreTestBase { private readonly IRepository _appUserRepository; diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MongoTestCollection.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MongoTestCollection.cs deleted file mode 100644 index 42c85760c3..0000000000 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MongoTestCollection.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Xunit; - -namespace MyCompanyName.MyProjectName.MongoDB -{ - [CollectionDefinition(Name)] - public class MongoTestCollection : ICollectionFixture - { - public const string Name = "MongoDB Collection"; - } -} \ No newline at end of file diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoCollection.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoCollection.cs new file mode 100644 index 0000000000..52160c0e3c --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoCollection.cs @@ -0,0 +1,10 @@ +using Xunit; + +namespace MyCompanyName.MyProjectName.MongoDB +{ + [CollectionDefinition(MyProjectNameTestConsts.CollectionDefinitionName)] + public class MyProjectNameMongoCollection : MyProjectNameMongoDbCollectionFixtureBase + { + + } +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbCollectionFixtureBase.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbCollectionFixtureBase.cs new file mode 100644 index 0000000000..05c514a677 --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbCollectionFixtureBase.cs @@ -0,0 +1,10 @@ +using MyCompanyName.MyProjectName.MongoDB; +using Xunit; + +namespace MyCompanyName.MyProjectName.MongoDB +{ + public class MyProjectNameMongoDbCollectionFixtureBase : ICollectionFixture + { + + } +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MongoDbFixture.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs similarity index 85% rename from templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MongoDbFixture.cs rename to templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs index 0feac4eebf..dbbb3d5980 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MongoDbFixture.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs @@ -3,7 +3,7 @@ using Mongo2Go; namespace MyCompanyName.MyProjectName.MongoDB { - public class MongoDbFixture : IDisposable + public class MyProjectNameMongoDbFixture : IDisposable { private static readonly MongoDbRunner MongoDbRunner = MongoDbRunner.Start(); public static readonly string ConnectionString = MongoDbRunner.ConnectionString; @@ -13,4 +13,4 @@ namespace MyCompanyName.MyProjectName.MongoDB MongoDbRunner?.Dispose(); } } -} \ No newline at end of file +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs index bcaf7494a7..44783b67e4 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs @@ -12,9 +12,9 @@ namespace MyCompanyName.MyProjectName.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + - "Db_" + - Guid.NewGuid().ToString("N"); + var connectionString = MyProjectNameMongoDbFixture.ConnectionString.EnsureEndsWith('/') + + "Db_" + + Guid.NewGuid().ToString("N"); Configure(options => { @@ -22,4 +22,4 @@ namespace MyCompanyName.MyProjectName.MongoDB }); } } -} \ No newline at end of file +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Samples/SampleRepositoryTests.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Samples/SampleRepositoryTests.cs index 17d8007c16..deee3b4b61 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Samples/SampleRepositoryTests.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Samples/SampleRepositoryTests.cs @@ -13,7 +13,7 @@ namespace MyCompanyName.MyProjectName.MongoDB.Samples * (like default AppUser repository IRepository here). * Only test your custom repository methods. */ - [Collection(MongoTestCollection.Name)] + [Collection(MyProjectNameTestConsts.CollectionDefinitionName)] public class SampleRepositoryTests : MyProjectNameMongoDbTestBase { private readonly IRepository _appUserRepository; diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestConsts.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestConsts.cs new file mode 100644 index 0000000000..342185c841 --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestConsts.cs @@ -0,0 +1,7 @@ +namespace MyCompanyName.MyProjectName +{ + public static class MyProjectNameTestConsts + { + public const string CollectionDefinitionName = "MyProjectName collection"; + } +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebCollection.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebCollection.cs new file mode 100644 index 0000000000..453be8f7fc --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebCollection.cs @@ -0,0 +1,11 @@ +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using Xunit; + +namespace MyCompanyName.MyProjectName +{ + [CollectionDefinition(MyProjectNameTestConsts.CollectionDefinitionName)] + public class MyProjectNameWebCollection : MyProjectNameEntityFrameworkCoreCollectionFixtureBase + { + + } +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/Pages/Index_Tests.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/Pages/Index_Tests.cs index b74d22c3f0..6d59438b47 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/Pages/Index_Tests.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/Pages/Index_Tests.cs @@ -4,6 +4,7 @@ using Xunit; namespace MyCompanyName.MyProjectName.Pages { + [Collection(MyProjectNameTestConsts.CollectionDefinitionName)] public class Index_Tests : MyProjectNameWebTestBase { [Fact] From 93d2f0c421d57433712f43af73c92c1d55c5f8f0 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Sun, 17 May 2020 17:40:35 +0800 Subject: [PATCH 2/5] Update SampleAppServiceTests.cs --- .../Samples/SampleAppServiceTests.cs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/Samples/SampleAppServiceTests.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/Samples/SampleAppServiceTests.cs index 4d36d6cdc2..836ee8f170 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/Samples/SampleAppServiceTests.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/Samples/SampleAppServiceTests.cs @@ -30,16 +30,5 @@ namespace MyCompanyName.MyProjectName.Samples result.TotalCount.ShouldBeGreaterThan(0); result.Items.ShouldContain(u => u.UserName == "admin"); } - - [Fact] - public async Task Initial_Data_Should_Contain_Admin_User2() - { - //Act - var result = await _userAppService.GetListAsync(new GetIdentityUsersInput()); - - //Assert - result.TotalCount.ShouldBeGreaterThan(0); - result.Items.ShouldContain(u => u.UserName == "admin"); - } } } From a8513c461d71c36f57b0a1196298ac73d420e800 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Mon, 18 May 2020 16:09:47 +0800 Subject: [PATCH 3/5] Remove Mongodb collection fixture when using EF Core. --- .../Templates/App/AppTemplateBase.cs | 7 +- ...plateRemoveMongodbCollectionFixtureStep.cs | 70 +++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateRemoveMongodbCollectionFixtureStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index 07ada2fe3d..fc88ac7615 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -38,6 +38,11 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App steps.Add(new AppTemplateSwitchEntityFrameworkCoreToMongoDbStep()); } + if (context.BuildArgs.DatabaseProvider == DatabaseProvider.EntityFrameworkCore) + { + steps.Add(new AppTemplateRemoveMongodbCollectionFixtureStep()); + } + if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore) { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore")); @@ -167,4 +172,4 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App } } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateRemoveMongodbCollectionFixtureStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateRemoveMongodbCollectionFixtureStep.cs new file mode 100644 index 0000000000..bf069c61ea --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateRemoveMongodbCollectionFixtureStep.cs @@ -0,0 +1,70 @@ +using System.Collections.Generic; +using System.Linq; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public class AppTemplateRemoveMongodbCollectionFixtureStep : ProjectBuildPipelineStep + { + public override void Execute(ProjectBuildContext context) + { + //MyCompanyName.MyProjectName.Application.Tests + RemoveFile(context, "/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationCollection.cs"); + RemoveKeyword(context, + "/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/Samples/SampleAppServiceTests.cs", + "[Collection(MyProjectNameTestConsts.CollectionDefinitionName)]"); + + //MyCompanyName.MyProjectName.Domain.Tests + RemoveFile(context, "/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainCollection.cs"); + RemoveKeyword(context, + "/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/Samples/SampleDomainTests.cs", + "[Collection(MyProjectNameTestConsts.CollectionDefinitionName)]"); + + //MyCompanyName.MyProjectName.EntityFrameworkCore.Tests + RemoveFile(context, "/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreCollection.cs"); + RemoveFile(context, "/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreCollectionFixtureBase.cs"); + RemoveFile(context, "/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreFixture.cs"); + RemoveKeyword(context, + "/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs", + "[Collection(MyProjectNameTestConsts.CollectionDefinitionName)]"); + + //MyCompanyName.MyProjectName.Web.Tests + RemoveFile(context, "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebCollection.cs"); + RemoveKeyword(context, + "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/Pages/Index_Tests.cs", + "[Collection(MyProjectNameTestConsts.CollectionDefinitionName)]"); + + //MyCompanyName.MyProjectName.TestBase + RemoveFile(context, "/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestConsts.cs"); + } + + private static void RemoveFile(ProjectBuildContext context, string targetModuleFilePath) + { + var file = context.Files.FirstOrDefault(x => x.Name == targetModuleFilePath); + if (file != null) + { + context.Files.Remove(file); + } + } + + private static void RemoveKeyword(ProjectBuildContext context, string targetModuleFilePath, string keyword) + { + var file = context.GetFile(targetModuleFilePath); + + file.NormalizeLineEndings(); + + var lines = file.GetLines(); + var newLines = new List(); + + for (var i = 0; i < lines.Length; i++) + { + if (!lines[i].Contains(keyword)) + { + newLines.Add(lines[i]); + } + } + + file.SetLines(newLines); + } + } +} From 25030cf998f220184a8309b6aa36e6787cc591fc Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 2 Jun 2020 14:38:16 +0800 Subject: [PATCH 4/5] Small refactoring. --- .../ProjectBuilding/Templates/App/AppTemplateBase.cs | 6 +----- .../Volo/Abp/MongoDB/MongoDbFixture.cs | 12 +++++++++--- .../MongoDb/MyProjectNameMongoDbFixture.cs | 10 ++++++++-- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index fc88ac7615..417c004f36 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -38,11 +38,6 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App steps.Add(new AppTemplateSwitchEntityFrameworkCoreToMongoDbStep()); } - if (context.BuildArgs.DatabaseProvider == DatabaseProvider.EntityFrameworkCore) - { - steps.Add(new AppTemplateRemoveMongodbCollectionFixtureStep()); - } - if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore) { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore")); @@ -52,6 +47,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App if (context.BuildArgs.DatabaseProvider != DatabaseProvider.MongoDb) { + steps.Add(new AppTemplateRemoveMongodbCollectionFixtureStep()); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests")); } diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs index f401d0d6d4..3fa239ebbb 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs @@ -5,12 +5,18 @@ namespace Volo.Abp.MongoDB { public class MongoDbFixture : IDisposable { - private static readonly MongoDbRunner MongoDbRunner = MongoDbRunner.Start(); - public static readonly string ConnectionString = MongoDbRunner.ConnectionString; + private static readonly MongoDbRunner MongoDbRunner; + public static readonly string ConnectionString; + + static MongoDbFixture() + { + MongoDbRunner = MongoDbRunner.Start(); + ConnectionString = MongoDbRunner.ConnectionString; + } public void Dispose() { MongoDbRunner?.Dispose(); } } -} \ No newline at end of file +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs index dbbb3d5980..e59c0c5f7f 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs @@ -5,8 +5,14 @@ namespace MyCompanyName.MyProjectName.MongoDB { public class MyProjectNameMongoDbFixture : IDisposable { - private static readonly MongoDbRunner MongoDbRunner = MongoDbRunner.Start(); - public static readonly string ConnectionString = MongoDbRunner.ConnectionString; + private static readonly MongoDbRunner MongoDbRunner; + public static readonly string ConnectionString; + + static MongoDbFixture() + { + MongoDbRunner = MongoDbRunner.Start(); + ConnectionString = MongoDbRunner.ConnectionString; + } public void Dispose() { From 3af7696d0dbb75c108530cf1afd0506745af96b1 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 2 Jun 2020 15:07:37 +0800 Subject: [PATCH 5/5] Rename MongoDbFixture to MyProjectNameMongoDbFixture. --- .../MongoDb/MyProjectNameMongoDbFixture.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs index e59c0c5f7f..d1a863eb2c 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs @@ -8,7 +8,7 @@ namespace MyCompanyName.MyProjectName.MongoDB private static readonly MongoDbRunner MongoDbRunner; public static readonly string ConnectionString; - static MongoDbFixture() + static MyProjectNameMongoDbFixture() { MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString;