示例#1
0
        public async Task Execute_adds_expected_ToC_metadata(string heading, string expectedTitle, string expectedHeadingId)
        {
            // ARRANGE
            var input = new TestDocument(
                content: $@"<html>
                                <head>
                                    {heading}
                                </head>
                                <body>                         
                                </body>
                            </html>"
                );

            var sut = new LoadToc();

            // ACT
            var output = await ExecuteAsync(input, sut).SingleAsync();

            // ASSERT
            output.Keys.Should().Contain(DocsTemplateKeys.ToC);
            var toc = output.Get <IEnumerable <IMetadata> >(DocsTemplateKeys.ToC);

            toc.Should().ContainSingle();

            toc.Single().Keys.Should().Contain(DocsTemplateKeys.TocTitle);
            toc.Single().GetString(DocsTemplateKeys.TocTitle).Should().Be(expectedTitle);

            toc.Single().GetString(DocsTemplateKeys.TocHeadingId).Should().Be(expectedHeadingId);
        }
示例#2
0
        public async Task Execute_does_not_add_metadata_if_input_cannot_be_parsed()
        {
            // ARRANGE
            var input = new TestDocument(content: "not-html");

            var sut = new LoadToc();

            // ACT
            var output = await ExecuteAsync(input, sut).SingleAsync();

            // ASSERT
            output.Should().BeSameAs(input);
        }
示例#3
0
        public async Task Execute_adds_expected_entries_for_multi_level_ToCs()
        {
            // ARRANGE
            var input = new TestDocument(
                content: $@"<html>
                                <head>
                                    <h2>Heading 2.1</h2>
                                        <h3>Heading 3.1</h3>
                                        <h3>Heading 3.2</h3>
                                            <h4>Heading 4.1</h4>
                                    <h2>Heading 2.2</h2>                        
                                </head>
                                <body>                         
                                </body>
                            </html>"
                );

            var sut = new LoadToc();

            // ACT
            var output = await ExecuteAsync(input, sut).SingleAsync();

            // ASSERT
            var toc = output.Get <IEnumerable <IMetadata> >(DocsTemplateKeys.ToC);

            toc
            .Should().NotBeNull()
            .And.HaveCount(2);

            toc.First().GetString(DocsTemplateKeys.TocTitle)
            .Should().Be("Heading 2.1");

            var level2Entries = toc.First().GetDocuments(DocsTemplateKeys.TocItems);

            level2Entries
            .Should().NotBeNull()
            .And.HaveCount(2);

            level2Entries.First().GetString(DocsTemplateKeys.TocTitle)
            .Should().Be("Heading 3.1");

            level2Entries.Last().GetString(DocsTemplateKeys.TocTitle)
            .Should().Be("Heading 3.2");

            toc.Last().GetString(DocsTemplateKeys.TocTitle)
            .Should().Be("Heading 2.2");

            toc.Last().GetDocuments(DocsTemplateKeys.TocItems)
            .Should().NotBeNull()
            .And.BeEmpty();
        }
示例#4
0
        public async Task Execute_does_not_add_metadata_if_input_contains_unexpected_order_of_headings(string headings)
        {
            // ARRANGE
            var input = new TestDocument(
                content: $@"<html>
                                <head>
                                        
                                </head>
                                <body>                         
                                </body>
                            </html>"
                );

            var sut = new LoadToc();

            // ACT
            var output = await ExecuteAsync(input, sut).SingleAsync();

            // ASSERT
            output.Should().BeSameAs(input);
        }