From 0a4d8e427e5a9a99e13814678bc37856d58b6003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 4 Dec 2016 03:45:47 +0300 Subject: [PATCH] Added failing test: Should_Automatically_Register_Modules. --- src/Volo.Abp/Modularity/IAbpModule.cs | 3 +- test/Volo.Abp.Tests/AbpApplication_Tests.cs | 14 +++++++- test/Volo.Abp.Tests/project.json | 3 +- ...onalDependencyInjectionExtensions_Tests.cs | 33 +++---------------- .../ServiceCollectionShouldlyExtensions.cs | 32 ++++++++++++++++++ 5 files changed, 53 insertions(+), 32 deletions(-) create mode 100644 test/Volo.DependencyInjection.Tests/ServiceCollectionShouldlyExtensions.cs diff --git a/src/Volo.Abp/Modularity/IAbpModule.cs b/src/Volo.Abp/Modularity/IAbpModule.cs index 789f12457f..a2b397c49c 100644 --- a/src/Volo.Abp/Modularity/IAbpModule.cs +++ b/src/Volo.Abp/Modularity/IAbpModule.cs @@ -1,8 +1,9 @@ using Microsoft.Extensions.DependencyInjection; +using Volo.DependencyInjection; namespace Volo.Abp.Modularity { - public interface IAbpModule + public interface IAbpModule : ISingletonDependency { void ConfigureServices(IServiceCollection services); } diff --git a/test/Volo.Abp.Tests/AbpApplication_Tests.cs b/test/Volo.Abp.Tests/AbpApplication_Tests.cs index e0a1dc416f..5969edeac4 100644 --- a/test/Volo.Abp.Tests/AbpApplication_Tests.cs +++ b/test/Volo.Abp.Tests/AbpApplication_Tests.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Tests.Modularity; +using Volo.DependencyInjection.Tests; using Xunit; namespace Volo.Abp.Tests @@ -7,7 +8,7 @@ namespace Volo.Abp.Tests public class AbpApplication_Tests { [Fact] - public void Should_Start_And_Stop_Empty_AbpApplication() + public void Should_Start_And_Stop_Empty_Application() { var services = new ServiceCollection(); @@ -16,5 +17,16 @@ namespace Volo.Abp.Tests application.Start(services.BuildServiceProvider()); } } + + [Fact] + public void Should_Automatically_Register_Modules() + { + var services = new ServiceCollection(); + + using (AbpApplication.Create(services)) + { + services.ShouldContainSingleton(typeof(IndependentEmptyModule)); + } + } } } diff --git a/test/Volo.Abp.Tests/project.json b/test/Volo.Abp.Tests/project.json index fc6b333f7b..444f2bc612 100644 --- a/test/Volo.Abp.Tests/project.json +++ b/test/Volo.Abp.Tests/project.json @@ -5,7 +5,8 @@ "dependencies": { "AbpTestBase": "1.0.0-*", - "Volo.Abp": "1.0.0-*" + "Volo.Abp": "1.0.0-*", + "Volo.DependencyInjection.Tests": "1.0.0-*" }, "frameworks": { diff --git a/test/Volo.DependencyInjection.Tests/AbpConventionalDependencyInjectionExtensions_Tests.cs b/test/Volo.DependencyInjection.Tests/AbpConventionalDependencyInjectionExtensions_Tests.cs index 5c2f4c8b10..9df939c484 100644 --- a/test/Volo.DependencyInjection.Tests/AbpConventionalDependencyInjectionExtensions_Tests.cs +++ b/test/Volo.DependencyInjection.Tests/AbpConventionalDependencyInjectionExtensions_Tests.cs @@ -1,7 +1,4 @@ -using System; -using System.Linq; -using Microsoft.Extensions.DependencyInjection; -using Shouldly; +using Microsoft.Extensions.DependencyInjection; using Xunit; namespace Volo.DependencyInjection.Tests @@ -22,7 +19,7 @@ namespace Volo.DependencyInjection.Tests _services.AddType(typeof(MyTransientClass)); //Assert - ShouldContainTransient(_services, typeof(MyTransientClass)); + _services.ShouldContainTransient(typeof(MyTransientClass)); } [Fact] @@ -32,31 +29,9 @@ namespace Volo.DependencyInjection.Tests _services.AddType(typeof(MySingletonClass)); //Assert - ShouldContainSingleton(_services, typeof(MySingletonClass)); + _services.ShouldContainSingleton(typeof(MySingletonClass)); } - - private static void ShouldContainTransient(IServiceCollection services, Type type) - { - var serviceDescriptor = services.FirstOrDefault(s => s.ServiceType == type); - - serviceDescriptor.ImplementationType.ShouldBe(type); - serviceDescriptor.ShouldNotBeNull(); - serviceDescriptor.ImplementationFactory.ShouldBeNull(); - serviceDescriptor.ImplementationInstance.ShouldBeNull(); - serviceDescriptor.Lifetime.ShouldBe(ServiceLifetime.Transient); - } - - private static void ShouldContainSingleton(IServiceCollection services, Type type) - { - var serviceDescriptor = services.FirstOrDefault(s => s.ServiceType == type); - - serviceDescriptor.ImplementationType.ShouldBe(type); - serviceDescriptor.ShouldNotBeNull(); - serviceDescriptor.ImplementationFactory.ShouldBeNull(); - serviceDescriptor.ImplementationInstance.ShouldBeNull(); - serviceDescriptor.Lifetime.ShouldBe(ServiceLifetime.Singleton); - } - + public class MyTransientClass : ITransientDependency { diff --git a/test/Volo.DependencyInjection.Tests/ServiceCollectionShouldlyExtensions.cs b/test/Volo.DependencyInjection.Tests/ServiceCollectionShouldlyExtensions.cs new file mode 100644 index 0000000000..0022cd8de2 --- /dev/null +++ b/test/Volo.DependencyInjection.Tests/ServiceCollectionShouldlyExtensions.cs @@ -0,0 +1,32 @@ +using System; +using System.Linq; +using Microsoft.Extensions.DependencyInjection; +using Shouldly; + +namespace Volo.DependencyInjection.Tests +{ + public static class ServiceCollectionShouldlyExtensions + { + public static void ShouldContainTransient(this IServiceCollection services, Type type) + { + var serviceDescriptor = services.FirstOrDefault(s => s.ServiceType == type); + + serviceDescriptor.ImplementationType.ShouldBe(type); + serviceDescriptor.ShouldNotBeNull(); + serviceDescriptor.ImplementationFactory.ShouldBeNull(); + serviceDescriptor.ImplementationInstance.ShouldBeNull(); + serviceDescriptor.Lifetime.ShouldBe(ServiceLifetime.Transient); + } + + public static void ShouldContainSingleton(this IServiceCollection services, Type type) + { + var serviceDescriptor = services.FirstOrDefault(s => s.ServiceType == type); + + serviceDescriptor.ImplementationType.ShouldBe(type); + serviceDescriptor.ShouldNotBeNull(); + serviceDescriptor.ImplementationFactory.ShouldBeNull(); + serviceDescriptor.ImplementationInstance.ShouldBeNull(); + serviceDescriptor.Lifetime.ShouldBe(ServiceLifetime.Singleton); + } + } +} \ No newline at end of file