From 975bf0ce9c90b9a9573062bafa03e48d6441ddec Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 16 Oct 2023 14:34:54 +0800 Subject: [PATCH] Abstract all db-related unit tests. Resolve #17488 --- .../MyProjectNameApplicationCollection.cs | 10 ---- .../MyProjectNameApplicationTestModule.cs | 2 +- .../Samples/SampleAppServiceTests.cs | 7 ++- ...panyName.MyProjectName.Domain.Tests.csproj | 5 +- .../MyProjectNameDomainCollection.cs | 10 ---- .../MyProjectNameDomainTestModule.cs | 8 +-- .../Samples/SampleDomainTests.cs | 6 +- .../EfCoreSampleAppServiceTests.cs | 10 ++++ .../Domains/EfCoreSampleDomainTests.cs | 10 ++++ ...rojectNameEntityFrameworkCoreTestModule.cs | 2 +- ...ojectName.EntityFrameworkCore.Tests.csproj | 2 +- .../MongoDBSampleAppServiceTests.cs | 11 ++++ .../Domains/MongoDBSampleDomainTests.cs | 10 ++++ .../MongoDb/MyProjectNameMongoDbTestModule.cs | 4 +- ...anyName.MyProjectName.MongoDB.Tests.csproj | 2 +- ...yCompanyName.MyProjectName.TestBase.csproj | 2 +- .../MyProjectNameTestBaseModule.cs | 7 +-- ...CompanyName.MyProjectName.Web.Tests.csproj | 1 + .../MyProjectNameWebCollection.cs | 10 ---- .../MyProjectNameWebTestModule.cs | 4 +- .../Pages/Index_Tests.cs | 1 - .../WebContentDirectoryFinder.cs | 59 ------------------- 22 files changed, 68 insertions(+), 115 deletions(-) delete mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationCollection.cs delete 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/Applications/EfCoreSampleAppServiceTests.cs create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Domains/EfCoreSampleDomainTests.cs create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Applications/MongoDBSampleAppServiceTests.cs create mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Domains/MongoDBSampleDomainTests.cs delete mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebCollection.cs delete mode 100644 templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/WebContentDirectoryFinder.cs 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 deleted file mode 100644 index 89f3adcb06..0000000000 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationCollection.cs +++ /dev/null @@ -1,10 +0,0 @@ -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/MyProjectNameApplicationTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationTestModule.cs index 95ba50122b..9903158828 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationTestModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationTestModule.cs @@ -5,7 +5,7 @@ namespace MyCompanyName.MyProjectName; [DependsOn( typeof(MyProjectNameApplicationModule), typeof(MyProjectNameDomainTestModule) - )] +)] public class MyProjectNameApplicationTestModule : AbpModule { 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 1fa30d115a..c4baf0d4f3 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 @@ -1,6 +1,7 @@ using Shouldly; using System.Threading.Tasks; using Volo.Abp.Identity; +using Volo.Abp.Modularity; using Xunit; namespace MyCompanyName.MyProjectName.Samples; @@ -10,12 +11,12 @@ namespace MyCompanyName.MyProjectName.Samples; * (like IIdentityUserAppService here). * Only test your own application services. */ -[Collection(MyProjectNameTestConsts.CollectionDefinitionName)] -public class SampleAppServiceTests : MyProjectNameApplicationTestBase +public abstract class SampleAppServiceTests : MyProjectNameTestBase + where TStartupModule : IAbpModule { private readonly IIdentityUserAppService _userAppService; - public SampleAppServiceTests() + protected SampleAppServiceTests() { _userAppService = GetRequiredService(); } diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj index fadb31f943..0907ac6df0 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj @@ -9,11 +9,12 @@ - + - + + 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 deleted file mode 100644 index b09e099e9a..0000000000 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainCollection.cs +++ /dev/null @@ -1,10 +0,0 @@ -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/MyProjectNameDomainTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainTestModule.cs index 340c63cc8b..695903e189 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainTestModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainTestModule.cs @@ -1,11 +1,11 @@ -using MyCompanyName.MyProjectName.EntityFrameworkCore; -using Volo.Abp.Modularity; +using Volo.Abp.Modularity; namespace MyCompanyName.MyProjectName; [DependsOn( - typeof(MyProjectNameEntityFrameworkCoreTestModule) - )] + typeof(MyProjectNameDomainModule), + typeof(MyProjectNameTestBaseModule) +)] public class MyProjectNameDomainTestModule : AbpModule { 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 1578cd4feb..cf411cf411 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 @@ -1,6 +1,7 @@ using System.Threading.Tasks; using Shouldly; using Volo.Abp.Identity; +using Volo.Abp.Modularity; using Xunit; namespace MyCompanyName.MyProjectName.Samples; @@ -11,12 +12,13 @@ namespace MyCompanyName.MyProjectName.Samples; * Only test your own domain services. */ [Collection(MyProjectNameTestConsts.CollectionDefinitionName)] -public class SampleDomainTests : MyProjectNameDomainTestBase +public abstract class SampleDomainTests : MyProjectNameTestBase + where TStartupModule : IAbpModule { private readonly IIdentityUserRepository _identityUserRepository; private readonly IdentityUserManager _identityUserManager; - public SampleDomainTests() + protected SampleDomainTests() { _identityUserRepository = GetRequiredService(); _identityUserManager = GetRequiredService(); diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Applications/EfCoreSampleAppServiceTests.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Applications/EfCoreSampleAppServiceTests.cs new file mode 100644 index 0000000000..3908c7430b --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Applications/EfCoreSampleAppServiceTests.cs @@ -0,0 +1,10 @@ +using MyCompanyName.MyProjectName.Samples; +using Xunit; + +namespace MyCompanyName.MyProjectName.EntityFrameworkCore.Applications; + +[Collection(MyProjectNameTestConsts.CollectionDefinitionName)] +public class EfCoreSampleAppServiceTests : SampleAppServiceTests +{ + +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Domains/EfCoreSampleDomainTests.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Domains/EfCoreSampleDomainTests.cs new file mode 100644 index 0000000000..1d1b1054f8 --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Domains/EfCoreSampleDomainTests.cs @@ -0,0 +1,10 @@ +using MyCompanyName.MyProjectName.Samples; +using Xunit; + +namespace MyCompanyName.MyProjectName.EntityFrameworkCore.Domains; + +[Collection(MyProjectNameTestConsts.CollectionDefinitionName)] +public class EfCoreSampleDomainTests : SampleDomainTests +{ + +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs index 2f5d456244..1804d8cff7 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs @@ -14,8 +14,8 @@ using Volo.Abp.Uow; namespace MyCompanyName.MyProjectName.EntityFrameworkCore; [DependsOn( + typeof(MyProjectNameApplicationTestModule), typeof(MyProjectNameEntityFrameworkCoreModule), - typeof(MyProjectNameTestBaseModule), typeof(AbpEntityFrameworkCoreSqliteModule) )] public class MyProjectNameEntityFrameworkCoreTestModule : AbpModule diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj index f12e37d0b7..591cb81f35 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj @@ -10,7 +10,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Applications/MongoDBSampleAppServiceTests.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Applications/MongoDBSampleAppServiceTests.cs new file mode 100644 index 0000000000..c455d81e96 --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Applications/MongoDBSampleAppServiceTests.cs @@ -0,0 +1,11 @@ +using MyCompanyName.MyProjectName.MongoDB; +using MyCompanyName.MyProjectName.Samples; +using Xunit; + +namespace MyCompanyName.MyProjectName.MongoDb.Applications; + +[Collection(MyProjectNameTestConsts.CollectionDefinitionName)] +public class MongoDBSampleAppServiceTests : SampleAppServiceTests +{ + +} diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Domains/MongoDBSampleDomainTests.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Domains/MongoDBSampleDomainTests.cs new file mode 100644 index 0000000000..8a6fc63b91 --- /dev/null +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Domains/MongoDBSampleDomainTests.cs @@ -0,0 +1,10 @@ +using MyCompanyName.MyProjectName.Samples; +using Xunit; + +namespace MyCompanyName.MyProjectName.MongoDB.Domains; + +[Collection(MyProjectNameTestConsts.CollectionDefinitionName)] +public class MongoDBSampleDomainTests : SampleDomainTests +{ + +} 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 6218a3030b..b2b1a931b7 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 @@ -5,9 +5,9 @@ using Volo.Abp.Modularity; namespace MyCompanyName.MyProjectName.MongoDB; [DependsOn( - typeof(MyProjectNameTestBaseModule), + typeof(MyProjectNameApplicationTestModule), typeof(MyProjectNameMongoDbModule) - )] +)] public class MyProjectNameMongoDbTestModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj index 1dcc1dd196..94a4a96721 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj @@ -10,7 +10,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj index 988b45b0bc..457ce53b2a 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj @@ -12,7 +12,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs index 924ee6eb79..4832f18293 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs @@ -13,15 +13,10 @@ namespace MyCompanyName.MyProjectName; typeof(AbpAutofacModule), typeof(AbpTestBaseModule), typeof(AbpAuthorizationModule), - typeof(MyProjectNameDomainModule) + typeof(AbpBackgroundJobsAbstractionsModule) )] public class MyProjectNameTestBaseModule : AbpModule { - public override void PreConfigureServices(ServiceConfigurationContext context) - { - - } - public override void ConfigureServices(ServiceConfigurationContext context) { Configure(options => diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj index d6eba699a4..98470b1fa5 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj @@ -19,6 +19,7 @@ + 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 deleted file mode 100644 index 36ff0836c2..0000000000 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebCollection.cs +++ /dev/null @@ -1,10 +0,0 @@ -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/MyProjectNameWebTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebTestModule.cs index cc5450d0d8..34a9b32c8d 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebTestModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebTestModule.cs @@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.Mvc.ApplicationParts; using Microsoft.Extensions.DependencyInjection; +using MyCompanyName.MyProjectName.EntityFrameworkCore; using MyCompanyName.MyProjectName.Localization; using MyCompanyName.MyProjectName.Web; using MyCompanyName.MyProjectName.Web.Menus; @@ -20,7 +21,8 @@ namespace MyCompanyName.MyProjectName; [DependsOn( typeof(AbpAspNetCoreTestBaseModule), typeof(MyProjectNameWebModule), - typeof(MyProjectNameApplicationTestModule) + typeof(MyProjectNameApplicationTestModule), + typeof(MyProjectNameEntityFrameworkCoreTestModule) )] public class MyProjectNameWebTestModule : AbpModule { 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 9958e8a71a..f72b526e0e 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,7 +4,6 @@ using Xunit; namespace MyCompanyName.MyProjectName.Pages; -[Collection(MyProjectNameTestConsts.CollectionDefinitionName)] public class Index_Tests : MyProjectNameWebTestBase { [Fact] diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/WebContentDirectoryFinder.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/WebContentDirectoryFinder.cs deleted file mode 100644 index f0a3149272..0000000000 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/WebContentDirectoryFinder.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.IO; -using System.Linq; - -namespace MyCompanyName.MyProjectName; - -/// -/// This class is used to find root path of the web project. Used for; -/// 1. unit tests (to find views). -/// 2. entity framework core command line commands (to find the conn string). -/// -public static class WebContentDirectoryFinder -{ - public static string? CalculateContentRootFolder() - { - var domainAssemblyDirectoryPath = - Path.GetDirectoryName(typeof(MyProjectNameDomainModule).Assembly.Location); - if (domainAssemblyDirectoryPath == null) - { - throw new Exception( - $"Could not find location of {typeof(MyProjectNameDomainModule).Assembly.FullName} assembly!"); - } - - var directoryInfo = new DirectoryInfo(domainAssemblyDirectoryPath); - - if (Environment.GetEnvironmentVariable("NCrunch") == "1") - { - while (!DirectoryContains(directoryInfo.FullName, "MyCompanyName.MyProjectName.Web.csproj", SearchOption.AllDirectories)) - { - directoryInfo = directoryInfo.Parent ?? throw new Exception("Could not find content root folder!"); - } - - var webProject = Directory.GetFiles(directoryInfo.FullName, string.Empty, SearchOption.AllDirectories) - .First(filePath => string.Equals(Path.GetFileName(filePath), "MyCompanyName.MyProjectName.Web.csproj")); - - return Path.GetDirectoryName(webProject); - } - - while (!DirectoryContains(directoryInfo.FullName, "MyCompanyName.MyProjectName.sln")) - { - directoryInfo = directoryInfo.Parent ?? throw new Exception("Could not find content root folder!"); - } - - var webFolder = Path.Combine(directoryInfo.FullName, $"src{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Web"); - if (Directory.Exists(webFolder)) - { - return webFolder; - } - - throw new Exception("Could not find root folder of the web project!"); - } - - private static bool DirectoryContains(string directory, string fileName, - SearchOption searchOption = SearchOption.TopDirectoryOnly) - { - return Directory.GetFiles(directory, string.Empty, searchOption) - .Any(filePath => string.Equals(Path.GetFileName(filePath), fileName)); - } -}