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); + } + } +}