From ed65990020fbee7ecc83a14e7431c64431147782 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Wed, 22 May 2019 22:03:20 +0300 Subject: [PATCH] Add MongoDb unit tests to the MVC template. --- templates/mvc/MyCompanyName.MyProjectName.sln | 7 +++ .../MongoDB/MyProjectNameMongoDbTestBase.cs | 7 +++ .../MongoDB/MyProjectNameMongoDbTestModule.cs | 32 +++++++++++++ .../MongoDB/Samples/SampleRepositoryTests.cs | 48 +++++++++++++++++++ ...anyName.MyProjectName.MongoDB.Tests.csproj | 20 ++++++++ .../MyProjectNameTestBaseModule.cs | 6 +++ 6 files changed, 120 insertions(+) create mode 100644 templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestBase.cs create mode 100644 templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs create mode 100644 templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/Samples/SampleRepositoryTests.cs create mode 100644 templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj diff --git a/templates/mvc/MyCompanyName.MyProjectName.sln b/templates/mvc/MyCompanyName.MyProjectName.sln index ce5199dc30..8681376586 100644 --- a/templates/mvc/MyCompanyName.MyProjectName.sln +++ b/templates/mvc/MyCompanyName.MyProjectName.sln @@ -43,6 +43,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.Domain.Tests", "test\MyCompanyName.MyProjectName.Domain.Tests\MyCompanyName.MyProjectName.Domain.Tests.csproj", "{E512F4D9-9375-480F-A2F6-A46509F9D824}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.MongoDB.Tests", "test\MyCompanyName.MyProjectName.MongoDB.Tests\MyCompanyName.MyProjectName.MongoDB.Tests.csproj", "{6015D17B-104B-4EC2-A9B7-D8A40C891458}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -121,6 +123,10 @@ Global {E512F4D9-9375-480F-A2F6-A46509F9D824}.Debug|Any CPU.Build.0 = Debug|Any CPU {E512F4D9-9375-480F-A2F6-A46509F9D824}.Release|Any CPU.ActiveCfg = Release|Any CPU {E512F4D9-9375-480F-A2F6-A46509F9D824}.Release|Any CPU.Build.0 = Release|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -144,6 +150,7 @@ Global {1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} {91853F21-9CD9-4132-BC29-A7D5D84FFFE7} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} {E512F4D9-9375-480F-A2F6-A46509F9D824} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {6015D17B-104B-4EC2-A9B7-D8A40C891458} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} diff --git a/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestBase.cs b/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestBase.cs new file mode 100644 index 0000000000..c7fc5f9eea --- /dev/null +++ b/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestBase.cs @@ -0,0 +1,7 @@ +namespace MyCompanyName.MyProjectName.MongoDB +{ + public abstract class MyProjectNameMongoDbTestBase : MyProjectNameTestBase + { + + } +} diff --git a/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs b/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs new file mode 100644 index 0000000000..7c0d13716b --- /dev/null +++ b/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs @@ -0,0 +1,32 @@ +using Mongo2Go; +using MyCompanyName.MyProjectName.MongoDb; +using Volo.Abp; +using Volo.Abp.Data; +using Volo.Abp.Modularity; + +namespace MyCompanyName.MyProjectName.MongoDB +{ + [DependsOn( + typeof(MyProjectNameTestBaseModule), + typeof(MyProjectNameMongoDbModule) + )] + public class MyProjectNameMongoDbTestModule : AbpModule + { + private MongoDbRunner _mongoDbRunner; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + _mongoDbRunner = MongoDbRunner.Start(); + + Configure(options => + { + options.ConnectionStrings.Default = _mongoDbRunner.ConnectionString + "|MyProjectName"; + }); + } + + public override void OnApplicationShutdown(ApplicationShutdownContext context) + { + _mongoDbRunner.Dispose(); + } + } +} \ No newline at end of file diff --git a/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/Samples/SampleRepositoryTests.cs b/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/Samples/SampleRepositoryTests.cs new file mode 100644 index 0000000000..2a9a1134b5 --- /dev/null +++ b/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/Samples/SampleRepositoryTests.cs @@ -0,0 +1,48 @@ +using System; +using System.Threading.Tasks; +using MyCompanyName.MyProjectName.Users; +using MongoDB.Driver.Linq; +using Shouldly; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Uow; +using Xunit; + +namespace MyCompanyName.MyProjectName.MongoDB.Samples +{ + /* This is just an example test class. + * Normally, you don't test ABP framework code + * (like default AppUser repository IRepository here). + * Only test your custom repository methods. + */ + public class SampleRepositoryTests : MyProjectNameMongoDbTestBase + { + private readonly IRepository _appUserRepository; + private readonly IUnitOfWorkManager _unitOfWorkManager; + + public SampleRepositoryTests() + { + _appUserRepository = GetRequiredService>(); + _unitOfWorkManager = GetRequiredService(); + } + + [Fact] + public async Task Should_Query_AppUser() + { + /* Need to manually start Unit Of Work because + * FirstOrDefaultAsync should be executed while db connection / context is available. + */ + using (var uow = _unitOfWorkManager.Begin()) + { + //Act + var adminUser = await _appUserRepository + .GetMongoQueryable() + .FirstOrDefaultAsync(u => u.UserName == "admin"); + + //Assert + adminUser.ShouldNotBeNull(); + + await uow.CompleteAsync(); + } + } + } +} diff --git a/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj b/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj new file mode 100644 index 0000000000..0ae2555849 --- /dev/null +++ b/templates/mvc/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj @@ -0,0 +1,20 @@ + + + + + + netcoreapp2.2 + MyCompanyName.MyProjectName + + + + + + + + + + + + + diff --git a/templates/mvc/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs b/templates/mvc/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs index bd74934e82..0c2d22c0e0 100644 --- a/templates/mvc/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs +++ b/templates/mvc/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs @@ -3,6 +3,7 @@ using MyCompanyName.MyProjectName.Data; using Volo.Abp; using Volo.Abp.Authorization; using Volo.Abp.Autofac; +using Volo.Abp.BackgroundJobs; using Volo.Abp.Modularity; namespace MyCompanyName.MyProjectName @@ -17,6 +18,11 @@ namespace MyCompanyName.MyProjectName { public override void ConfigureServices(ServiceConfigurationContext context) { + Configure(options => + { + options.IsJobExecutionEnabled = false; + }); + context.Services.AddAlwaysAllowAuthorization(); }