Browse Source

Abstract all db-related unit tests.

Resolve #17488
pull/17880/head
maliming 3 years ago
parent
commit
975bf0ce9c
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 10
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationCollection.cs
  2. 2
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationTestModule.cs
  3. 7
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/Samples/SampleAppServiceTests.cs
  4. 5
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj
  5. 10
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainCollection.cs
  6. 8
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainTestModule.cs
  7. 6
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/Samples/SampleDomainTests.cs
  8. 10
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Applications/EfCoreSampleAppServiceTests.cs
  9. 10
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/Domains/EfCoreSampleDomainTests.cs
  10. 2
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs
  11. 2
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj
  12. 11
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Applications/MongoDBSampleAppServiceTests.cs
  13. 10
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/Domains/MongoDBSampleDomainTests.cs
  14. 4
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs
  15. 2
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj
  16. 2
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj
  17. 7
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs
  18. 1
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj
  19. 10
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebCollection.cs
  20. 4
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebTestModule.cs
  21. 1
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/Pages/Index_Tests.cs
  22. 59
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/WebContentDirectoryFinder.cs

10
templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyProjectNameApplicationCollection.cs

@ -1,10 +0,0 @@
using MyCompanyName.MyProjectName.EntityFrameworkCore;
using Xunit;
namespace MyCompanyName.MyProjectName;
[CollectionDefinition(MyProjectNameTestConsts.CollectionDefinitionName)]
public class MyProjectNameApplicationCollection : MyProjectNameEntityFrameworkCoreCollectionFixtureBase
{
}

2
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
{

7
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<TStartupModule> : MyProjectNameTestBase<TStartupModule>
where TStartupModule : IAbpModule
{
private readonly IIdentityUserAppService _userAppService;
public SampleAppServiceTests()
protected SampleAppServiceTests()
{
_userAppService = GetRequiredService<IIdentityUserAppService>();
}

5
templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj

@ -9,11 +9,12 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\MyCompanyName.MyProjectName.EntityFrameworkCore.Tests\MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
<ProjectReference Include="..\..\src\MyCompanyName.MyProjectName.Domain\MyCompanyName.MyProjectName.Domain.csproj" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.TestBase\MyCompanyName.MyProjectName.TestBase.csproj" />
</ItemGroup>
</Project>

10
templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainCollection.cs

@ -1,10 +0,0 @@
using MyCompanyName.MyProjectName.EntityFrameworkCore;
using Xunit;
namespace MyCompanyName.MyProjectName;
[CollectionDefinition(MyProjectNameTestConsts.CollectionDefinitionName)]
public class MyProjectNameDomainCollection : MyProjectNameEntityFrameworkCoreCollectionFixtureBase
{
}

8
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
{

6
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<TStartupModule> : MyProjectNameTestBase<TStartupModule>
where TStartupModule : IAbpModule
{
private readonly IIdentityUserRepository _identityUserRepository;
private readonly IdentityUserManager _identityUserManager;
public SampleDomainTests()
protected SampleDomainTests()
{
_identityUserRepository = GetRequiredService<IIdentityUserRepository>();
_identityUserManager = GetRequiredService<IdentityUserManager>();

10
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<MyProjectNameEntityFrameworkCoreTestModule>
{
}

10
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<MyProjectNameEntityFrameworkCoreTestModule>
{
}

2
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

2
templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj

@ -10,7 +10,7 @@
<ItemGroup>
<ProjectReference Include="..\..\src\MyCompanyName.MyProjectName.EntityFrameworkCore\MyCompanyName.MyProjectName.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.TestBase\MyCompanyName.MyProjectName.TestBase.csproj" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.Application.Tests\MyCompanyName.MyProjectName.Application.Tests.csproj" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.EntityFrameworkCore.Sqlite\Volo.Abp.EntityFrameworkCore.Sqlite.csproj" />
</ItemGroup>

11
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<MyProjectNameMongoDbTestModule>
{
}

10
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<MyProjectNameMongoDbTestModule>
{
}

4
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)

2
templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj

@ -10,7 +10,7 @@
<ItemGroup>
<ProjectReference Include="..\..\src\MyCompanyName.MyProjectName.MongoDB\MyCompanyName.MyProjectName.MongoDB.csproj" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.TestBase\MyCompanyName.MyProjectName.TestBase.csproj" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.Application.Tests\MyCompanyName.MyProjectName.Application.Tests.csproj" />
</ItemGroup>
<ItemGroup>

2
templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj

@ -12,7 +12,7 @@
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.TestBase\Volo.Abp.TestBase.csproj" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Authorization\Volo.Abp.Authorization.csproj" />
<ProjectReference Include="..\..\src\MyCompanyName.MyProjectName.Domain\MyCompanyName.MyProjectName.Domain.csproj" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.BackgroundJobs.Abstractions\Volo.Abp.BackgroundJobs.Abstractions.csproj" />
</ItemGroup>
<ItemGroup>

7
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<AbpBackgroundJobOptions>(options =>

1
templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj

@ -19,6 +19,7 @@
<ProjectReference Include="..\MyCompanyName.MyProjectName.Application.Tests\MyCompanyName.MyProjectName.Application.Tests.csproj" />
<ProjectReference Include="..\..\src\MyCompanyName.MyProjectName.Web\MyCompanyName.MyProjectName.Web.csproj" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.AspNetCore.TestBase\Volo.Abp.AspNetCore.TestBase.csproj" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.EntityFrameworkCore.Tests\MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj" />
</ItemGroup>
<ItemGroup>

10
templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebCollection.cs

@ -1,10 +0,0 @@
using MyCompanyName.MyProjectName.EntityFrameworkCore;
using Xunit;
namespace MyCompanyName.MyProjectName;
[CollectionDefinition(MyProjectNameTestConsts.CollectionDefinitionName)]
public class MyProjectNameWebCollection : MyProjectNameEntityFrameworkCoreCollectionFixtureBase
{
}

4
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
{

1
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]

59
templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/WebContentDirectoryFinder.cs

@ -1,59 +0,0 @@
using System;
using System.IO;
using System.Linq;
namespace MyCompanyName.MyProjectName;
/// <summary>
/// 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).
/// </summary>
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));
}
}
Loading…
Cancel
Save