public void AddControllerAsServices_MultipleCalls_RetainsPreviouslyAddedTypes() { // Arrange var services = new ServiceCollection(); var manager = new ApplicationPartManager(); manager.ApplicationParts.Add(new TestApplicationPart(typeof(ControllerOne), typeof(ControllerTwo))); manager.FeatureProviders.Add(new TestFeatureProvider()); var builder = new MvcBuilder(services, manager); builder.AddControllersAsServices(); // Act builder.AddControllersAsServices(); // Assert 2 var collection = services.ToList(); Assert.Equal(3, collection.Count); Assert.Single(collection, d => d.ServiceType.Equals(typeof(ControllerOne))); Assert.Single(collection, d => d.ServiceType.Equals(typeof(ControllerTwo))); }
public void WithControllersAsServices_AddsTypesToControllerTypeProviderAndServiceCollection() { // Arrange var collection = new ServiceCollection(); var controllerTypes = new[] { typeof(ControllerTypeA), typeof(TypeBController), }.Select(t => t.GetTypeInfo()).ToArray(); var builder = new MvcBuilder(collection, GetApplicationPartManager(controllerTypes)); // Act builder.AddControllersAsServices(); // Assert var services = collection.ToList(); Assert.Equal(3, services.Count); Assert.Equal(typeof(ControllerTypeA), services[0].ServiceType); Assert.Equal(typeof(ControllerTypeA), services[0].ImplementationType); Assert.Equal(ServiceLifetime.Transient, services[0].Lifetime); Assert.Equal(typeof(TypeBController), services[1].ServiceType); Assert.Equal(typeof(TypeBController), services[1].ImplementationType); Assert.Equal(ServiceLifetime.Transient, services[1].Lifetime); Assert.Equal(typeof(IControllerActivator), services[2].ServiceType); Assert.Equal(typeof(ServiceBasedControllerActivator), services[2].ImplementationType); Assert.Equal(ServiceLifetime.Transient, services[2].Lifetime); }