public void WriteTagHelperCreate_Runtime_RendersCorrectly_UsesSpecifiedTagHelperType() { // Arrange var extension = new DefaultTagHelperTargetExtension(); var context = TestCodeRenderingContext.CreateRuntime(); var tagHelperNode = new TagHelperIntermediateNode(); var node = new DefaultTagHelperCreateIntermediateNode() { FieldName = "__TestNamespace_MyTagHelper", TypeName = "TestNamespace.MyTagHelper", }; tagHelperNode.Children.Add(node); Push(context, tagHelperNode); // Act extension.WriteTagHelperCreate(context, node); // Assert var csharp = context.CodeWriter.GenerateCode(); Assert.Equal( @"__TestNamespace_MyTagHelper = CreateTagHelper<global::TestNamespace.MyTagHelper>(); __tagHelperExecutionContext.Add(__TestNamespace_MyTagHelper); ", csharp, ignoreLineEndingDifferences: true); }
public void WriteTagHelperCreate(CodeRenderingContext context, DefaultTagHelperCreateIntermediateNode node) { if (context.Parent as TagHelperIntermediateNode == null) { var message = Resources.FormatIntermediateNodes_InvalidParentNode(node.GetType(), typeof(TagHelperIntermediateNode)); throw new InvalidOperationException(message); } context.CodeWriter .WriteStartAssignment(node.FieldName) .Write(CreateTagHelperMethodName) .WriteLine("<global::" + node.TypeName + ">();"); if (!context.Options.DesignTime) { context.CodeWriter.WriteInstanceMethodInvocation( ExecutionContextVariableName, ExecutionContextAddMethodName, node.FieldName); } }