Browse Source

Remove Mongodb collection fixture when using EF Core.

pull/3982/head
maliming 7 years ago
parent
commit
a8513c461d
  1. 7
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs
  2. 70
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateRemoveMongodbCollectionFixtureStep.cs

7
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
}
}
}
}
}

70
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<string>();
for (var i = 0; i < lines.Length; i++)
{
if (!lines[i].Contains(keyword))
{
newLines.Add(lines[i]);
}
}
file.SetLines(newLines);
}
}
}
Loading…
Cancel
Save