File: Extensions\TemplateTargetExtensionTest.cs
Web Access
Project: src\src\Razor\src\Compiler\Microsoft.AspNetCore.Razor.Language\test\Microsoft.AspNetCore.Razor.Language.UnitTests.csproj (Microsoft.AspNetCore.Razor.Language.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
#nullable disable
 
using Microsoft.AspNetCore.Razor.Language.CodeGeneration;
using Microsoft.AspNetCore.Razor.Language.Intermediate;
using Xunit;
 
namespace Microsoft.AspNetCore.Razor.Language.Extensions;
 
public class TemplateTargetExtensionTest
{
    [Fact]
    public void WriteTemplate_WritesTemplateCode()
    {
        // Arrange
        var node = new TemplateIntermediateNode()
        {
            Children =
                {
                    new CSharpExpressionIntermediateNode()
                }
        };
        var extension = new TemplateTargetExtension()
        {
            TemplateTypeName = "global::TestTemplate"
        };
 
        var nodeWriter = RuntimeNodeWriter.Instance;
 
        using var context = TestCodeRenderingContext.CreateRuntime(nodeWriter: nodeWriter);
 
        // Act
        extension.WriteTemplate(context, node);
 
        // Assert
        var expected = @"item => new global::TestTemplate(async(__razor_template_writer) => {
    PushWriter(__razor_template_writer);
    Render Children
    PopWriter();
}
)";
 
        var output = context.CodeWriter.GetText().ToString();
        Assert.Equal(expected, output);
    }
}