Skip to content

Commit

Permalink
--include-unlisted-pages to allow backward compatibility
Browse files Browse the repository at this point in the history
adjusted tests accordingly
  • Loading branch information
giuliov committed Apr 3, 2022
1 parent edbcf0d commit 985566a
Show file tree
Hide file tree
Showing 24 changed files with 3,467 additions and 16 deletions.
10 changes: 5 additions & 5 deletions AzureDevOps.WikiPDFExport.Test/WikiDirectoryScannerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ public void givenWikiDirectoryScanner_whenWikiHasPagesOutsideOrderFile_thenTheyA
CSS = BASE_PATH + "Inputs/void.css",
DisableTelemetry = true,
Debug = true,
IncludeUnlistedPages = true,
Output = BASE_PATH + "Outputs/Dis-ordered",
};
var scanner = new WikiDirectoryScanner(options.Path, options, _dummyLogger);

var files = scanner.Scan();

Assert.Equal(5, files.Count);
Assert.Collection(files,
f => Assert.Equal("/Mentioned-Section.md", f.FileRelativePath),
f => Assert.Equal("/Mentioned-Section/In-Mentioned-Section.md", f.FileRelativePath),
Expand All @@ -34,22 +34,22 @@ public void givenWikiDirectoryScanner_whenWikiHasPagesOutsideOrderFile_thenTheyA
}

[Fact]
public void givenWikiDirectoryScanner_whenAPatternIsExcluded_thenTheFilesAreNotIncluded()
public void givenWikiDirectoryScanner_whenOnePatternIsExcluded_thenTheFilesAreNotIncluded()
{
var options = new Options
{
Path = BASE_PATH + "Inputs/Dis-ordered",
CSS = BASE_PATH + "Inputs/void.css",
DisableTelemetry = true,
Debug = true,
IncludeUnlistedPages = true,
Output = BASE_PATH + "Outputs/Exclude1",
ExcludePaths = new[] { "Home" }
};
var scanner = new WikiDirectoryScanner(options.Path, options, _dummyLogger);

var files = scanner.Scan();

Assert.Equal(4, files.Count);
Assert.Collection(files,
f => Assert.Equal("/Mentioned-Section.md", f.FileRelativePath),
f => Assert.Equal("/Mentioned-Section/In-Mentioned-Section.md", f.FileRelativePath),
Expand All @@ -66,14 +66,14 @@ public void givenWikiDirectoryScanner_whenTwoPatternAreExcluded_thenTheFilesAreN
CSS = BASE_PATH + "Inputs/void.css",
DisableTelemetry = true,
Debug = true,
IncludeUnlistedPages = true,
Output = BASE_PATH + "Outputs/Exclude2",
ExcludePaths = new[] { "In-.+Section", "Start" }
};
var scanner = new WikiDirectoryScanner(options.Path, options, _dummyLogger);

var files = scanner.Scan();

Assert.Single(files);
Assert.Collection(files,
f => Assert.Equal("/Mentioned-Section.md", f.FileRelativePath));
}
Expand All @@ -87,13 +87,13 @@ public void givenWikiDirectoryScanner_whenWikiIsCodeExample_thenNoOrderChangeFro
CSS = BASE_PATH + "Inputs/void.css",
DisableTelemetry = true,
Debug = true,
IncludeUnlistedPages = true,
Output = BASE_PATH + "Outputs/Code",
};
var scanner = new WikiDirectoryScanner(options.Path, options, _dummyLogger);

var files = scanner.Scan();

Assert.Equal(5, files.Count);
Assert.Collection(files,
f => Assert.Equal("/Another-Page.md", f.FileRelativePath),
f => Assert.Equal("/Another-Page/Sub-Page1.md", f.FileRelativePath),
Expand Down
102 changes: 102 additions & 0 deletions AzureDevOps.WikiPDFExport.Test/WikiOptionFilesScannerTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
using azuredevops_export_wiki;
using NSubstitute;
using Xunit;

namespace AzureDevOps.WikiPDFExport.Test
{
public class WikiOptionFilesScannerTests
{
const string BASE_PATH = "../../../test-data/";
ILogger _dummyLogger = Substitute.For<ILogger>();

[Fact]
public void givenWikiOptionFilesScanner_whenWikiHasPagesOutsideOrderFile_thenOnlyThoseInOrderAreIncluded()
{
var options = new Options
{
Path = BASE_PATH + "Inputs/Dis-ordered",
CSS = BASE_PATH + "Inputs/void.css",
DisableTelemetry = true,
Debug = true,
IncludeUnlistedPages = false,
Output = BASE_PATH + "Outputs/Dis-ordered",
};
var scanner = new WikiOptionFilesScanner(options.Path, options, _dummyLogger);

var files = scanner.Scan();

Assert.Collection(files,
f => Assert.Equal("/Mentioned-Section.md", f.FileRelativePath),
f => Assert.Equal("/Mentioned-Section-No-Home.md", f.FileRelativePath));
}

[Fact]
public void givenWikiOptionFilesScanner_whenOnePatternIsExcluded_thenTheFilesAreNotIncluded()
{
var options = new Options
{
Path = BASE_PATH + "Inputs/Dis-ordered",
CSS = BASE_PATH + "Inputs/void.css",
DisableTelemetry = true,
Debug = true,
IncludeUnlistedPages = false,
Output = BASE_PATH + "Outputs/Exclude1",
ExcludePaths = new[] { "Home" }
};
var scanner = new WikiOptionFilesScanner(options.Path, options, _dummyLogger);

var files = scanner.Scan();

Assert.Collection(files,
f => Assert.Equal("/Mentioned-Section.md", f.FileRelativePath));
}

[Fact]
public void givenWikiOptionFilesScanner_whenTwoPatternAreExcluded_thenTheFilesAreNotIncluded()
{
var options = new Options
{
Path = BASE_PATH + "Inputs/Code",
CSS = BASE_PATH + "Inputs/void.css",
DisableTelemetry = true,
Debug = true,
IncludeUnlistedPages = false,
Output = BASE_PATH + "Outputs/Code",
ExcludePaths = new[] { "Sub-Page2", "Customization" }
};
var scanner = new WikiOptionFilesScanner(options.Path, options, _dummyLogger);

var files = scanner.Scan();

Assert.Collection(files,
f => Assert.Equal("/Another-Page.md", f.FileRelativePath),
f => Assert.Equal("/Another-Page/Sub-Page1.md", f.FileRelativePath));

}

[Fact]
public void givenWikiOptionFilesScanner_whenWikiIsCodeExample_thenNoOrderChangeFromPreviousVersion()
{
var options = new Options
{
Path = BASE_PATH + "Inputs/Code",
CSS = BASE_PATH + "Inputs/void.css",
DisableTelemetry = true,
Debug = true,
IncludeUnlistedPages = false,
Output = BASE_PATH + "Outputs/Code",
};
var scanner = new WikiOptionFilesScanner(options.Path, options, _dummyLogger);

var files = scanner.Scan();

Assert.Collection(files,
f => Assert.Equal("/Another-Page.md", f.FileRelativePath),
f => Assert.Equal("/Another-Page/Sub-Page1.md", f.FileRelativePath),
f => Assert.Equal("/Another-Page/Sub-Page2.md", f.FileRelativePath),
f => Assert.Equal("/Another-Page/Sub-Page2/Sub-Page2a.md", f.FileRelativePath),
f => Assert.Equal("/Admin-Layout-and-Customization.md", f.FileRelativePath));
}

}
}
38 changes: 36 additions & 2 deletions AzureDevOps.WikiPDFExport.Test/WikiPDFExporterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

namespace AzureDevOps.WikiPDFExport.Test
{
[Trait("Category", "Integration")]
public class WikiPDFExporterTests
{
const string BASE_PATH = "../../../test-data/";
Expand All @@ -18,22 +19,55 @@ public class WikiPDFExporterTests
[InlineData("EmptyOrderFile")]
[InlineData("Flat")]
[InlineData("WellFormed")]
public async void Export_Wiki_Succeeds(string wikiToExport)
public async void ExportWiki_IncludeUnlistedPages_Succeeds(string wikiToExport)
{
var options = new Options
{
Path = BASE_PATH + $"Inputs/{wikiToExport}",
CSS = BASE_PATH + "Inputs/void.css",
DisableTelemetry = true,
Debug = true, // generates HTML
IncludeUnlistedPages = true,
Output = BASE_PATH + $"Outputs/{wikiToExport}.pdf",
};
var export = new WikiPDFExporter(options, _dummyLogger);

bool ok = await export.Export();

Assert.True(ok);
string expectedHtmlPath = BASE_PATH + $"Expected/{wikiToExport}.pdf.html";
string expectedHtmlPath = BASE_PATH + $"Expected/IncludeUnlistedPages/{wikiToExport}.pdf.html";
string outputHtmlPath = options.Output + ".html";
Assert.True(File.Exists(outputHtmlPath));
var expected = File.ReadAllText(expectedHtmlPath);
var actual = File.ReadAllText(outputHtmlPath);
Assert.Equal(expected, actual);
}

[Theory]
[InlineData("Code")]
[InlineData("DeepLink")]
[InlineData("Dis-ordered")]
[InlineData("Emoticons")]
[InlineData("EmptyOrderFile")]
[InlineData("Flat")]
[InlineData("WellFormed")]
public async void ExportWiki_OnlyOrderListedPages_Succeeds(string wikiToExport)
{
var options = new Options
{
Path = BASE_PATH + $"Inputs/{wikiToExport}",
CSS = BASE_PATH + "Inputs/void.css",
DisableTelemetry = true,
Debug = true, // generates HTML
IncludeUnlistedPages = false,
Output = BASE_PATH + $"Outputs/{wikiToExport}.pdf",
};
var export = new WikiPDFExporter(options, _dummyLogger);

bool ok = await export.Export();

Assert.True(ok);
string expectedHtmlPath = BASE_PATH + $"Expected/OrderListedPages/{wikiToExport}.pdf.html";
string outputHtmlPath = options.Output + ".html";
Assert.True(File.Exists(outputHtmlPath));
var expected = File.ReadAllText(expectedHtmlPath);
Expand Down
1 change: 1 addition & 0 deletions AzureDevOps.WikiPDFExport.Test/test-data/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Outputs/

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<!DOCTYPE html><html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"></head><a id="links">&nbsp;</a><ol>
<li><a href="/Target#Target-1">#Target-1</a></li>
<li>
<ol>
<li><a href="/Target#Target-1-Target-2">#Target-1-Target-2</a></li>
</ol>
</li>
<li>
<ol>
<li>
<ol>
<li><a href="/Target#Target-1-Target-2-Target-3">#Target-1-Target-2-Target-3</a></li>
</ol>
</li>
</ol>
</li>
</ol>
<a id="target">&nbsp;</a><h2 id="target-1">Target 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non est semper, dignissim dolor id, dapibus ex. Mauris vestibulum fringilla consectetur. In hac habitasse platea dictumst. Nullam varius aliquet consequat. Cras eget mauris imperdiet, sagittis ex a, rhoncus ex. Curabitur sollicitudin, velit sed dapibus ullamcorper, massa nulla faucibus erat, sit amet dapibus augue diam vitae mauris. Donec purus eros, dignissim vehicula turpis nec, eleifend rhoncus neque. Donec nec pellentesque elit. Integer purus arcu, bibendum ac lobortis id, consequat ut turpis. Nunc pellentesque sapien mi, sed porttitor elit sagittis nec. Nullam viverra cursus enim non sollicitudin. Aenean suscipit vulputate dui, vel consequat nisl consectetur sed. Aliquam commodo pellentesque est, eget euismod nulla venenatis in. Phasellus vestibulum at justo eget pharetra. Pellentesque enim erat, dignissim a auctor nec, ullamcorper quis odio. Mauris aliquam sit amet magna ut suscipit.</p>
<p>Maecenas vitae ligula in nibh accumsan venenatis. Maecenas sagittis eu ligula id eleifend. Integer euismod sollicitudin pretium. Cras non nulla ut nunc ullamcorper fermentum ut sit amet nulla. Nullam et varius ligula. Mauris et dapibus massa. Integer varius volutpat libero, a malesuada nisl. Nulla at dui justo.</p>
<p>In a consequat nunc, eu blandit odio. Etiam cursus pellentesque magna, vitae eleifend nisi. Ut quis tortor a nisl congue rutrum. Vestibulum venenatis massa metus, id sollicitudin enim hendrerit et. Donec sed leo luctus, rhoncus massa ac, finibus justo. Phasellus sagittis dui id lectus iaculis tempus. Duis non lorem non arcu accumsan iaculis. Nunc nisi orci, dapibus et vehicula a, maximus eu massa. Nunc justo sem, tempor id ex vel, venenatis pulvinar tellus. Nunc a tortor posuere, convallis mauris ut, suscipit purus.</p>
<p>Mauris ut auctor metus. Integer quis ex nulla. Donec malesuada, sapien condimentum rutrum mattis, leo est aliquam tellus, id rhoncus eros nunc nec diam. Pellentesque dapibus pharetra rutrum. Quisque eu magna vitae turpis rhoncus consectetur ut non felis. Proin maximus ultrices odio, ut vestibulum dui mollis et. Sed eu tempus mauris. Sed fringilla ante tristique erat sollicitudin suscipit vitae eu turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
<p>Etiam at accumsan enim. Phasellus et lectus molestie, varius lectus nec, porta ex. Aliquam iaculis orci ut nibh semper fringilla. Pellentesque blandit enim in elit suscipit blandit. Curabitur mauris felis, fermentum in justo in, blandit gravida enim. Maecenas vitae tincidunt arcu. Nulla facilisi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse lobortis facilisis pretium. Nulla et porttitor urna, non semper nibh. Nam vel sem vel sapien tristique commodo.</p>
<h3 id="target-2">Target 2</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non est semper, dignissim dolor id, dapibus ex. Mauris vestibulum fringilla consectetur. In hac habitasse platea dictumst. Nullam varius aliquet consequat. Cras eget mauris imperdiet, sagittis ex a, rhoncus ex. Curabitur sollicitudin, velit sed dapibus ullamcorper, massa nulla faucibus erat, sit amet dapibus augue diam vitae mauris. Donec purus eros, dignissim vehicula turpis nec, eleifend rhoncus neque. Donec nec pellentesque elit. Integer purus arcu, bibendum ac lobortis id, consequat ut turpis. Nunc pellentesque sapien mi, sed porttitor elit sagittis nec. Nullam viverra cursus enim non sollicitudin. Aenean suscipit vulputate dui, vel consequat nisl consectetur sed. Aliquam commodo pellentesque est, eget euismod nulla venenatis in. Phasellus vestibulum at justo eget pharetra. Pellentesque enim erat, dignissim a auctor nec, ullamcorper quis odio. Mauris aliquam sit amet magna ut suscipit.</p>
<p>Maecenas vitae ligula in nibh accumsan venenatis. Maecenas sagittis eu ligula id eleifend. Integer euismod sollicitudin pretium. Cras non nulla ut nunc ullamcorper fermentum ut sit amet nulla. Nullam et varius ligula. Mauris et dapibus massa. Integer varius volutpat libero, a malesuada nisl. Nulla at dui justo.</p>
<p>In a consequat nunc, eu blandit odio. Etiam cursus pellentesque magna, vitae eleifend nisi. Ut quis tortor a nisl congue rutrum. Vestibulum venenatis massa metus, id sollicitudin enim hendrerit et. Donec sed leo luctus, rhoncus massa ac, finibus justo. Phasellus sagittis dui id lectus iaculis tempus. Duis non lorem non arcu accumsan iaculis. Nunc nisi orci, dapibus et vehicula a, maximus eu massa. Nunc justo sem, tempor id ex vel, venenatis pulvinar tellus. Nunc a tortor posuere, convallis mauris ut, suscipit purus.</p>
<p>Mauris ut auctor metus. Integer quis ex nulla. Donec malesuada, sapien condimentum rutrum mattis, leo est aliquam tellus, id rhoncus eros nunc nec diam. Pellentesque dapibus pharetra rutrum. Quisque eu magna vitae turpis rhoncus consectetur ut non felis. Proin maximus ultrices odio, ut vestibulum dui mollis et. Sed eu tempus mauris. Sed fringilla ante tristique erat sollicitudin suscipit vitae eu turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
<p>Etiam at accumsan enim. Phasellus et lectus molestie, varius lectus nec, porta ex. Aliquam iaculis orci ut nibh semper fringilla. Pellentesque blandit enim in elit suscipit blandit. Curabitur mauris felis, fermentum in justo in, blandit gravida enim. Maecenas vitae tincidunt arcu. Nulla facilisi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse lobortis facilisis pretium. Nulla et porttitor urna, non semper nibh. Nam vel sem vel sapien tristique commodo.</p>
<h4 id="target-3">Target 3</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non est semper, dignissim dolor id, dapibus ex. Mauris vestibulum fringilla consectetur. In hac habitasse platea dictumst. Nullam varius aliquet consequat. Cras eget mauris imperdiet, sagittis ex a, rhoncus ex. Curabitur sollicitudin, velit sed dapibus ullamcorper, massa nulla faucibus erat, sit amet dapibus augue diam vitae mauris. Donec purus eros, dignissim vehicula turpis nec, eleifend rhoncus neque. Donec nec pellentesque elit. Integer purus arcu, bibendum ac lobortis id, consequat ut turpis. Nunc pellentesque sapien mi, sed porttitor elit sagittis nec. Nullam viverra cursus enim non sollicitudin. Aenean suscipit vulputate dui, vel consequat nisl consectetur sed. Aliquam commodo pellentesque est, eget euismod nulla venenatis in. Phasellus vestibulum at justo eget pharetra. Pellentesque enim erat, dignissim a auctor nec, ullamcorper quis odio. Mauris aliquam sit amet magna ut suscipit.</p>
<p>Maecenas vitae ligula in nibh accumsan venenatis. Maecenas sagittis eu ligula id eleifend. Integer euismod sollicitudin pretium. Cras non nulla ut nunc ullamcorper fermentum ut sit amet nulla. Nullam et varius ligula. Mauris et dapibus massa. Integer varius volutpat libero, a malesuada nisl. Nulla at dui justo.</p>
<p>In a consequat nunc, eu blandit odio. Etiam cursus pellentesque magna, vitae eleifend nisi. Ut quis tortor a nisl congue rutrum. Vestibulum venenatis massa metus, id sollicitudin enim hendrerit et. Donec sed leo luctus, rhoncus massa ac, finibus justo. Phasellus sagittis dui id lectus iaculis tempus. Duis non lorem non arcu accumsan iaculis. Nunc nisi orci, dapibus et vehicula a, maximus eu massa. Nunc justo sem, tempor id ex vel, venenatis pulvinar tellus. Nunc a tortor posuere, convallis mauris ut, suscipit purus.</p>
<p>Mauris ut auctor metus. Integer quis ex nulla. Donec malesuada, sapien condimentum rutrum mattis, leo est aliquam tellus, id rhoncus eros nunc nec diam. Pellentesque dapibus pharetra rutrum. Quisque eu magna vitae turpis rhoncus consectetur ut non felis. Proin maximus ultrices odio, ut vestibulum dui mollis et. Sed eu tempus mauris. Sed fringilla ante tristique erat sollicitudin suscipit vitae eu turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
<p>Etiam at accumsan enim. Phasellus et lectus molestie, varius lectus nec, porta ex. Aliquam iaculis orci ut nibh semper fringilla. Pellentesque blandit enim in elit suscipit blandit. Curabitur mauris felis, fermentum in justo in, blandit gravida enim. Maecenas vitae tincidunt arcu. Nulla facilisi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse lobortis facilisis pretium. Nulla et porttitor urna, non semper nibh. Nam vel sem vel sapien tristique commodo.</p>
<footer><style></style></footer></html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<!DOCTYPE html><html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"></head><a id="mentioned-section">&nbsp;</a><p>Mentioned Section root</p>
<footer><style></style></footer></html>
Loading

0 comments on commit 985566a

Please sign in to comment.