Skip to content

Commit ef0b41a

Browse files
Add additional Markdown Source Generator Tests
1 parent d58e204 commit ef0b41a

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

common/CommunityToolkit.Labs.Core.SourceGenerators.Tests/CommunityToolkit.Labs.Core.SourceGenerators.Tests/ToolkitSampleMetadataTests.Documentation.cs

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,99 @@ Without any front matter.
4242

4343
VerifyGeneratedDiagnostics<ToolkitSampleMetadataGenerator>(SimpleSource, markdown, DiagnosticDescriptors.MarkdownYAMLFrontMatterException.Id, DiagnosticDescriptors.SampleNotReferencedInMarkdown.Id);
4444
}
45+
46+
[DataRow(1, DisplayName = "Title")]
47+
[DataRow(3, DisplayName = "Description")]
48+
[DataRow(4, DisplayName = "Keywords")]
49+
[DataRow(7, DisplayName = "Category")]
50+
[DataRow(8, DisplayName = "Subcategory")]
51+
[TestMethod]
52+
public void MissingFrontMatterField(int removeline)
53+
{
54+
string markdown = @"---
55+
title: Canvas Layout
56+
author: mhawker
57+
description: A canvas-like VirtualizingLayout for use in an ItemsRepeater
58+
keywords: CanvasLayout, ItemsRepeater, VirtualizingLayout, Canvas, Layout, Panel, Arrange
59+
dev_langs:
60+
- csharp
61+
category: Controls
62+
subcategory: Layout
63+
---
64+
# This is some test documentation...
65+
> [!SAMPLE Sample]
66+
Without any front matter.";
67+
68+
// Remove the field we want to test is missing.
69+
var lines = markdown.Split('\n').ToList();
70+
lines.RemoveAt(removeline);
71+
markdown = String.Join('\n', lines);
72+
73+
VerifyGeneratedDiagnostics<ToolkitSampleMetadataGenerator>(SimpleSource, markdown, DiagnosticDescriptors.MarkdownYAMLFrontMatterMissingField.Id, DiagnosticDescriptors.SampleNotReferencedInMarkdown.Id); // We won't see the sample reference as we bail out when the front matter fails to be complete...
74+
}
75+
76+
[TestMethod]
77+
public void MarkdownInvalidSampleReference()
78+
{
79+
string markdown = @"---
80+
title: Canvas Layout
81+
author: mhawker
82+
description: A canvas-like VirtualizingLayout for use in an ItemsRepeater
83+
keywords: CanvasLayout, ItemsRepeater, VirtualizingLayout, Canvas, Layout, Panel, Arrange
84+
dev_langs:
85+
- csharp
86+
category: Controls
87+
subcategory: Layout
88+
---
89+
# This is some test documentation...
90+
> [!SAMPLE SampINVALIDle]
91+
Without any front matter.
92+
";
93+
94+
VerifyGeneratedDiagnostics<ToolkitSampleMetadataGenerator>(SimpleSource, markdown,
95+
DiagnosticDescriptors.MarkdownSampleIdNotFound.Id,
96+
DiagnosticDescriptors.SampleNotReferencedInMarkdown.Id);
97+
}
98+
99+
[TestMethod]
100+
public void DocumentationMissingSample()
101+
{
102+
string markdown = @"---
103+
title: Canvas Layout
104+
author: mhawker
105+
description: A canvas-like VirtualizingLayout for use in an ItemsRepeater
106+
keywords: CanvasLayout, ItemsRepeater, VirtualizingLayout, Canvas, Layout, Panel, Arrange
107+
dev_langs:
108+
- csharp
109+
category: Controls
110+
subcategory: Layout
111+
---
112+
# This is some test documentation...
113+
Without any front matter.";
114+
115+
VerifyGeneratedDiagnostics<ToolkitSampleMetadataGenerator>(SimpleSource, markdown,
116+
DiagnosticDescriptors.DocumentationHasNoSamples.Id,
117+
DiagnosticDescriptors.SampleNotReferencedInMarkdown.Id);
118+
}
119+
120+
[TestMethod]
121+
public void DocumentationValid()
122+
{
123+
string markdown = @"---
124+
title: Canvas Layout
125+
author: mhawker
126+
description: A canvas-like VirtualizingLayout for use in an ItemsRepeater
127+
keywords: CanvasLayout, ItemsRepeater, VirtualizingLayout, Canvas, Layout, Panel, Arrange
128+
dev_langs:
129+
- csharp
130+
category: Controls
131+
subcategory: Layout
132+
---
133+
# This is some test documentation...
134+
Without any front matter.
135+
> [!SAMPLE Sample]";
136+
137+
VerifyGeneratedDiagnostics<ToolkitSampleMetadataGenerator>(SimpleSource, markdown);
138+
}
45139
}
46140
}

0 commit comments

Comments
 (0)