Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }