public MvcCSharpCodeGenerator( CodeGeneratorContext context, string defaultModel, string injectAttribute, GeneratedTagHelperAttributeContext tagHelperAttributeContext) : base(context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (defaultModel == null) { throw new ArgumentNullException(nameof(defaultModel)); } if (injectAttribute == null) { throw new ArgumentNullException(nameof(injectAttribute)); } if (tagHelperAttributeContext == null) { throw new ArgumentNullException(nameof(tagHelperAttributeContext)); } _tagHelperAttributeContext = tagHelperAttributeContext; _defaultModel = defaultModel; _injectAttribute = injectAttribute; _tagHelperChunkDecorator = new TagHelperChunkDecorator(Context); }
public void Accept_CorrectlyDecoratesViewComponentChunks() { // Arrange var codeGeneratorContext = ChunkVisitorTestFactory.CreateCodeGeneratorContext(); var syntaxTreeNode = new Mock <Span>(new SpanBuilder()); foreach (var chunk in ChunkVisitorTestFactory.GetTestChunks(visitedTagHelperChunks: false)) { codeGeneratorContext.ChunkTreeBuilder.AddChunk(chunk, syntaxTreeNode.Object); } var tagHelperChunkDecorator = new TagHelperChunkDecorator(codeGeneratorContext); var expectedChunks = ChunkVisitorTestFactory.GetTestChunks(visitedTagHelperChunks: true); // Act var resultChunks = codeGeneratorContext.ChunkTreeBuilder.Root.Children; tagHelperChunkDecorator.Accept(resultChunks); // Assert // Test the normal tag helper chunk, Baz. Assert.Equal(expectedChunks.Count, resultChunks.Count); var expectedTagHelperChunk = (TagHelperChunk)expectedChunks[0]; var resultTagHelperChunk = Assert.IsType <TagHelperChunk>(resultChunks[0]); Assert.Equal( expectedTagHelperChunk.Descriptors.First().TypeName, Assert.Single(resultTagHelperChunk.Descriptors).TypeName); // Test the parent chunk with view component tag helper inside, Foo. var expectedParentChunk = (ParentChunk)expectedChunks[1]; var resultParentChunk = Assert.IsType <TagHelperChunk>(resultChunks[1]); Assert.Single(resultParentChunk.Children); expectedTagHelperChunk = (TagHelperChunk)expectedParentChunk.Children.First(); resultTagHelperChunk = (TagHelperChunk)resultParentChunk.Children.First(); Assert.Equal(expectedTagHelperChunk.Descriptors.First().TypeName, resultTagHelperChunk.Descriptors.First().TypeName, StringComparer.Ordinal); // Test the view component tag helper, Bar. expectedTagHelperChunk = expectedChunks.ElementAt(2) as TagHelperChunk; resultTagHelperChunk = resultChunks.ElementAt(2) as TagHelperChunk; Assert.NotNull(resultTagHelperChunk); Assert.Equal(expectedTagHelperChunk.Descriptors.First().TypeName, resultTagHelperChunk.Descriptors.First().TypeName, StringComparer.Ordinal); }