/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Mvc/Mvc.ViewFeatures/test/DependencyInjection/MvcViewFeaturesMvcBuilderExtensionsTest.cs
187 строк
6 KB
Shreyas Jejurkar
chore : Remove unwanted `using` statement (#39176)
02 янв 2022, 17:39
Не верифицирован
02 янв 2022, 17:39
c85baf8
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.ApplicationParts; using Microsoft.AspNetCore.Mvc.ViewComponents; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.Extensions.Options; namespace Microsoft.Extensions.DependencyInjection; public class MvcViewFeaturesMvcBuilderExtensionsTest { [Fact] public void AddViewComponentsAsServices_ReplacesViewComponentActivator() { // Arrange var builder = CreateBuilder(); MvcViewFeaturesMvcCoreBuilderExtensions.AddViewServices(builder.Services); builder.ConfigureApplicationPartManager(manager => { manager.ApplicationParts.Add(new TestApplicationPart()); manager.FeatureProviders.Add(new ViewComponentFeatureProvider()); }); // Act builder.AddViewComponentsAsServices(); // Assert var descriptor = Assert.Single(builder.Services.ToList(), d => d.ServiceType == typeof(IViewComponentActivator)); Assert.Equal(typeof(ServiceBasedViewComponentActivator), descriptor.ImplementationType); } [Fact] public void AddCookieTempDataProvider_RegistersExpectedTempDataProvider() { // Arrange var builder = CreateBuilder(); // Act builder.AddCookieTempDataProvider(); // Assert var descriptor = Assert.Single(builder.Services, item => item.ServiceType == typeof(ITempDataProvider)); Assert.Equal(typeof(CookieTempDataProvider), descriptor.ImplementationType); } [Fact] public void AddCookieTempDataProvider_DoesNotRegisterOptionsConfiguration() { // Arrange var builder = CreateBuilder(); // Act builder.AddCookieTempDataProvider(); // Assert Assert.DoesNotContain( builder.Services, item => item.ServiceType == typeof(IConfigureOptions<CookieTempDataProviderOptions>)); } [Fact] public void AddCookieTempDataProviderWithSetupAction_RegistersExpectedTempDataProvider() { // Arrange var builder = CreateBuilder(); // Act builder.AddCookieTempDataProvider(options => { }); // Assert var descriptor = Assert.Single(builder.Services, item => item.ServiceType == typeof(ITempDataProvider)); Assert.Equal(typeof(CookieTempDataProvider), descriptor.ImplementationType); } [Fact] public void AddCookieTempDataProviderWithSetupAction_RegistersOptionsConfiguration() { // Arrange var builder = CreateBuilder(); // Act builder.AddCookieTempDataProvider(options => { }); // Assert Assert.Single( builder.Services, item => item.ServiceType == typeof(IConfigureOptions<CookieTempDataProviderOptions>)); } [Fact] public void AddCookieTempDataProvider_RegistersExpectedTempDataProvider_IfCalledTwice() { // Arrange var builder = CreateBuilder(); // Act builder.AddCookieTempDataProvider(); builder.AddCookieTempDataProvider(); // Assert var descriptor = Assert.Single(builder.Services, item => item.ServiceType == typeof(ITempDataProvider)); Assert.Equal(typeof(CookieTempDataProvider), descriptor.ImplementationType); } [Fact] public void AddCookieTempDataProviderWithSetupAction_RegistersExpectedTempDataProvider_IfCalledTwice() { // Arrange var builder = CreateBuilder(); // Act builder.AddCookieTempDataProvider(options => { }); builder.AddCookieTempDataProvider(options => { }); // Assert var descriptor = Assert.Single(builder.Services, item => item.ServiceType == typeof(ITempDataProvider)); Assert.Equal(typeof(CookieTempDataProvider), descriptor.ImplementationType); } [Fact] public void AddViewComponentsAsServices_RegistersDiscoveredViewComponents() { // Arrange var services = new ServiceCollection(); var manager = new ApplicationPartManager(); manager.ApplicationParts.Add(new TestApplicationPart( typeof(ConventionsViewComponent), typeof(AttributeViewComponent))); manager.FeatureProviders.Add(new TestProvider()); var builder = new MvcBuilder(services, manager); // Act builder.AddViewComponentsAsServices(); // Assert var collection = services.ToList(); Assert.Equal(3, collection.Count); Assert.Equal(typeof(ConventionsViewComponent), collection[0].ServiceType); Assert.Equal(typeof(ConventionsViewComponent), collection[0].ImplementationType); Assert.Equal(ServiceLifetime.Transient, collection[0].Lifetime); Assert.Equal(typeof(AttributeViewComponent), collection[1].ServiceType); Assert.Equal(typeof(AttributeViewComponent), collection[1].ImplementationType); Assert.Equal(ServiceLifetime.Transient, collection[1].Lifetime); Assert.Equal(typeof(IViewComponentActivator), collection[2].ServiceType); Assert.Equal(typeof(ServiceBasedViewComponentActivator), collection[2].ImplementationType); Assert.Equal(ServiceLifetime.Singleton, collection[2].Lifetime); } private static MvcBuilder CreateBuilder() { var services = new ServiceCollection(); var manager = new ApplicationPartManager(); var builder = new MvcBuilder(services, manager); return builder; } public class ConventionsViewComponent { public string Invoke() => "Hello world"; } [ViewComponent(Name = "AttributesAreGreat")] public class AttributeViewComponent { public Task<string> InvokeAsync() => Task.FromResult("Hello world"); } private class TestProvider : IApplicationFeatureProvider<ViewComponentFeature> { public void PopulateFeature(IEnumerable<ApplicationPart> parts, ViewComponentFeature feature) { foreach (var type in parts.OfType<IApplicationPartTypeProvider>().SelectMany(p => p.Types)) { feature.ViewComponents.Add(type); } } } }