public void GetDescriptors_LocatesAddTagHelperCodeGenerator()
        {
            // Arrange
            var resolver = new TestTagHelperDescriptorResolver();
            var addOrRemoveTagHelperSpanVisitor = new AddOrRemoveTagHelperSpanVisitor(resolver, new ParserErrorSink());
            var document = new MarkupBlock(
                new DirectiveBlock(
                    Factory.CodeTransition(),
                    Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ")
                    .Accepts(AcceptedCharacters.None),
                    Factory.Code("\"something\"").AsAddTagHelper("something"))
                );
            var expectedRegistration =
                new TagHelperDirectiveDescriptor("something", TagHelperDirectiveType.AddTagHelper);

            // Act
            addOrRemoveTagHelperSpanVisitor.GetDescriptors(document);

            // Assert
            var directiveDescriptor = Assert.Single(resolver.DirectiveDescriptors);

            Assert.Equal(expectedRegistration, directiveDescriptor, TagHelperDirectiveDescriptorComparer.Default);
        }
        public void GetDescriptors_LocatesTagHelperCodeGenerator_CreatesDirectiveDescriptors()
        {
            // Arrange
            var resolver = new TestTagHelperDescriptorResolver();
            var addOrRemoveTagHelperSpanVisitor = new AddOrRemoveTagHelperSpanVisitor(resolver, new ParserErrorSink());
            var document = new MarkupBlock(
                Factory.Code("\"one\"").AsAddTagHelper("one"),
                Factory.Code("\"two\"").AsRemoveTagHelper("two"),
                Factory.Code("\"three\"").AsRemoveTagHelper("three"));
            var expectedRegistrations = new TagHelperDirectiveDescriptor[]
            {
                new TagHelperDirectiveDescriptor("one", TagHelperDirectiveType.AddTagHelper),
                new TagHelperDirectiveDescriptor("two", TagHelperDirectiveType.RemoveTagHelper),
                new TagHelperDirectiveDescriptor("three", TagHelperDirectiveType.RemoveTagHelper),
            };

            // Act
            addOrRemoveTagHelperSpanVisitor.GetDescriptors(document);

            // Assert
            Assert.Equal(expectedRegistrations,
                         resolver.DirectiveDescriptors,
                         TagHelperDirectiveDescriptorComparer.Default);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Returns a sequence of <see cref="TagHelperDescriptor"/>s for tag helpers that are registered in the
        /// specified <paramref name="documentRoot"/>.
        /// </summary>
        /// <param name="documentRoot">The <see cref="Block"/> to scan for tag helper registrations in.</param>
        /// <returns></returns>
        protected virtual IEnumerable <TagHelperDescriptor> GetTagHelperDescriptors([NotNull] Block documentRoot)
        {
            var addOrRemoveTagHelperSpanVisitor = new AddOrRemoveTagHelperSpanVisitor(TagHelperDescriptorResolver);

            return(addOrRemoveTagHelperSpanVisitor.GetDescriptors(documentRoot));
        }