File: DependencyInjection\RazorRuntimeCompilationMvcCoreBuilderExtensionsTest.cs
Web Access
Project: src\src\Mvc\Mvc.Razor.RuntimeCompilation\test\Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.Test.csproj (Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.Test)
// 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.Abstractions;
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
using Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation;
using Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure;
using Microsoft.AspNetCore.Routing;
 
namespace Microsoft.Extensions.DependencyInjection;
 
public class RazorRuntimeCompilationMvcCoreBuilderExtensionsTest
{
    [Fact]
    public void AddServices_ReplacesRazorViewCompiler()
    {
        // Arrange
        var services = new ServiceCollection()
            .AddSingleton<IViewCompilerProvider, DefaultViewCompilerProvider>();
 
        // Act
        RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(services);
 
        // Assert
        var serviceDescriptor = Assert.Single(services, service => service.ServiceType == typeof(IViewCompilerProvider));
        Assert.Equal(typeof(RuntimeViewCompilerProvider), serviceDescriptor.ImplementationType);
    }
 
    [Fact]
    public void AddServices_ReplacesActionDescriptorProvider()
    {
        // Arrange
        var services = new ServiceCollection()
            .AddSingleton<IActionDescriptorProvider, CompiledPageActionDescriptorProvider>();
 
        // Act
        RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(services);
 
        // Assert
        var serviceDescriptor = Assert.Single(services, service => service.ServiceType == typeof(IActionDescriptorProvider));
        Assert.Equal(typeof(PageActionDescriptorProvider), serviceDescriptor.ImplementationType);
 
        serviceDescriptor = Assert.Single(services, service => service.ServiceType == typeof(MatcherPolicy));
        Assert.Equal(typeof(PageLoaderMatcherPolicy), serviceDescriptor.ImplementationType);
    }
}