Added failing test: Should_Automatically_Register_Modules.

pull/81/head
Halil İbrahim Kalkan 9 years ago
parent 23d4f718c7
commit 0a4d8e427e

@ -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);
}

@ -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<IndependentEmptyModule>(services))
{
services.ShouldContainSingleton(typeof(IndependentEmptyModule));
}
}
}
}

@ -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": {

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

@ -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);
}
}
}
Loading…
Cancel
Save