|
5 | 5 | using System.Collections.Generic;
|
6 | 6 | using System.Linq;
|
7 | 7 | using Microsoft.AspNetCore.Razor.Language.Legacy;
|
| 8 | +using Microsoft.AspNetCore.Razor.Language.Syntax; |
8 | 9 | using Xunit;
|
9 | 10 |
|
10 | 11 | namespace Microsoft.AspNetCore.Razor.Language
|
@@ -45,8 +46,8 @@ public void Execute_CanHandleSingleLengthAddTagHelperDirective()
|
45 | 46 |
|
46 | 47 | // Assert
|
47 | 48 | var rewrittenTree = codeDocument.GetSyntaxTree();
|
48 |
| - var directiveValue = rewrittenTree.Root.Children.OfType<Block>().First().Children.Last() as Span; |
49 |
| - var chunkGenerator = Assert.IsType<AddTagHelperChunkGenerator>(directiveValue.ChunkGenerator); |
| 49 | + var erroredNode = rewrittenTree.Root.DescendantNodes().First(n => n.GetSpanContext()?.ChunkGenerator is AddTagHelperChunkGenerator); |
| 50 | + var chunkGenerator = Assert.IsType<AddTagHelperChunkGenerator>(erroredNode.GetSpanContext().ChunkGenerator); |
50 | 51 | Assert.Equal(expectedDiagnostics, chunkGenerator.Diagnostics);
|
51 | 52 | }
|
52 | 53 |
|
@@ -84,8 +85,8 @@ public void Execute_CanHandleSingleLengthRemoveTagHelperDirective()
|
84 | 85 |
|
85 | 86 | // Assert
|
86 | 87 | var rewrittenTree = codeDocument.GetSyntaxTree();
|
87 |
| - var directiveValue = rewrittenTree.Root.Children.OfType<Block>().First().Children.Last() as Span; |
88 |
| - var chunkGenerator = Assert.IsType<RemoveTagHelperChunkGenerator>(directiveValue.ChunkGenerator); |
| 88 | + var erroredNode = rewrittenTree.Root.DescendantNodes().First(n => n.GetSpanContext()?.ChunkGenerator is RemoveTagHelperChunkGenerator); |
| 89 | + var chunkGenerator = Assert.IsType<RemoveTagHelperChunkGenerator>(erroredNode.GetSpanContext().ChunkGenerator); |
89 | 90 | Assert.Equal(expectedDiagnostics, chunkGenerator.Diagnostics);
|
90 | 91 | }
|
91 | 92 |
|
@@ -123,8 +124,8 @@ public void Execute_CanHandleSingleLengthTagHelperPrefix()
|
123 | 124 |
|
124 | 125 | // Assert
|
125 | 126 | var rewrittenTree = codeDocument.GetSyntaxTree();
|
126 |
| - var directiveValue = rewrittenTree.Root.Children.OfType<Block>().First().Children.Last() as Span; |
127 |
| - var chunkGenerator = Assert.IsType<TagHelperPrefixDirectiveChunkGenerator>(directiveValue.ChunkGenerator); |
| 127 | + var erroredNode = rewrittenTree.Root.DescendantNodes().First(n => n.GetSpanContext()?.ChunkGenerator is TagHelperPrefixDirectiveChunkGenerator); |
| 128 | + var chunkGenerator = Assert.IsType<TagHelperPrefixDirectiveChunkGenerator>(erroredNode.GetSpanContext().ChunkGenerator); |
128 | 129 | Assert.Equal(expectedDiagnostics, chunkGenerator.Diagnostics);
|
129 | 130 | }
|
130 | 131 |
|
@@ -162,13 +163,11 @@ public void Execute_RewritesTagHelpers()
|
162 | 163 |
|
163 | 164 | // Assert
|
164 | 165 | var rewrittenTree = codeDocument.GetSyntaxTree();
|
| 166 | + var descendantNodes = rewrittenTree.Root.DescendantNodes(); |
165 | 167 | Assert.Empty(rewrittenTree.Diagnostics);
|
166 |
| - Assert.Equal(3, rewrittenTree.Root.Children.Count); |
167 |
| - var formTagHelper = Assert.IsType<TagHelperBlock>(rewrittenTree.Root.Children[2]); |
168 |
| - Assert.Equal("form", formTagHelper.TagName); |
169 |
| - Assert.Equal(3, formTagHelper.Children.Count); |
170 |
| - var inputTagHelper = Assert.IsType<TagHelperBlock>(formTagHelper.Children[1]); |
171 |
| - Assert.Equal("input", inputTagHelper.TagName); |
| 168 | + var tagHelperNodes = descendantNodes.Where(n => n is MarkupTagHelperElementSyntax tagHelper).Cast<MarkupTagHelperElementSyntax>().ToArray(); |
| 169 | + Assert.Equal("form", tagHelperNodes[0].TagHelperInfo.TagName); |
| 170 | + Assert.Equal("input", tagHelperNodes[1].TagHelperInfo.TagName); |
172 | 171 | }
|
173 | 172 |
|
174 | 173 | [Fact]
|
@@ -204,13 +203,11 @@ public void Execute_WithTagHelperDescriptorsFromCodeDocument_RewritesTagHelpers(
|
204 | 203 |
|
205 | 204 | // Assert
|
206 | 205 | var rewrittenTree = codeDocument.GetSyntaxTree();
|
| 206 | + var descendantNodes = rewrittenTree.Root.DescendantNodes(); |
207 | 207 | Assert.Empty(rewrittenTree.Diagnostics);
|
208 |
| - Assert.Equal(3, rewrittenTree.Root.Children.Count); |
209 |
| - var formTagHelper = Assert.IsType<TagHelperBlock>(rewrittenTree.Root.Children[2]); |
210 |
| - Assert.Equal("form", formTagHelper.TagName); |
211 |
| - Assert.Equal(3, formTagHelper.Children.Count); |
212 |
| - var inputTagHelper = Assert.IsType<TagHelperBlock>(formTagHelper.Children[1]); |
213 |
| - Assert.Equal("input", inputTagHelper.TagName); |
| 208 | + var tagHelperNodes = descendantNodes.Where(n => n is MarkupTagHelperElementSyntax tagHelper).Cast<MarkupTagHelperElementSyntax>().ToArray(); |
| 209 | + Assert.Equal("form", tagHelperNodes[0].TagHelperInfo.TagName); |
| 210 | + Assert.Equal("input", tagHelperNodes[1].TagHelperInfo.TagName); |
214 | 211 | }
|
215 | 212 |
|
216 | 213 | [Fact]
|
@@ -246,13 +243,11 @@ public void Execute_NullTagHelperDescriptorsFromCodeDocument_FallsBackToTagHelpe
|
246 | 243 |
|
247 | 244 | // Assert
|
248 | 245 | var rewrittenTree = codeDocument.GetSyntaxTree();
|
| 246 | + var descendantNodes = rewrittenTree.Root.DescendantNodes(); |
249 | 247 | Assert.Empty(rewrittenTree.Diagnostics);
|
250 |
| - Assert.Equal(3, rewrittenTree.Root.Children.Count); |
251 |
| - var formTagHelper = Assert.IsType<TagHelperBlock>(rewrittenTree.Root.Children[2]); |
252 |
| - Assert.Equal("form", formTagHelper.TagName); |
253 |
| - Assert.Equal(3, formTagHelper.Children.Count); |
254 |
| - var inputTagHelper = Assert.IsType<TagHelperBlock>(formTagHelper.Children[1]); |
255 |
| - Assert.Equal("input", inputTagHelper.TagName); |
| 248 | + var tagHelperNodes = descendantNodes.Where(n => n is MarkupTagHelperElementSyntax tagHelper).Cast<MarkupTagHelperElementSyntax>().ToArray(); |
| 249 | + Assert.Equal("form", tagHelperNodes[0].TagHelperInfo.TagName); |
| 250 | + Assert.Equal("input", tagHelperNodes[1].TagHelperInfo.TagName); |
256 | 251 | }
|
257 | 252 |
|
258 | 253 | [Fact]
|
@@ -288,10 +283,10 @@ public void Execute_EmptyTagHelperDescriptorsFromCodeDocument_DoesNotFallbackToT
|
288 | 283 |
|
289 | 284 | // Assert
|
290 | 285 | var rewrittenTree = codeDocument.GetSyntaxTree();
|
| 286 | + var descendantNodes = rewrittenTree.Root.DescendantNodes(); |
291 | 287 | Assert.Empty(rewrittenTree.Diagnostics);
|
292 |
| - Assert.Equal(7, rewrittenTree.Root.Children.Count); |
293 |
| - var rewrittenNodes = rewrittenTree.Root.Children.OfType<TagHelperBlock>(); |
294 |
| - Assert.Empty(rewrittenNodes); |
| 288 | + var tagHelperNodes = descendantNodes.Where(n => n is MarkupTagHelperElementSyntax tagHelper).Cast<MarkupTagHelperElementSyntax>().ToArray(); |
| 289 | + Assert.Empty(tagHelperNodes); |
295 | 290 | }
|
296 | 291 |
|
297 | 292 | [Fact]
|
@@ -339,12 +334,13 @@ public void Execute_DirectiveWithoutQuotes_RewritesTagHelpers_TagHelperMatchesEl
|
339 | 334 |
|
340 | 335 | // Assert
|
341 | 336 | var rewrittenTree = codeDocument.GetSyntaxTree();
|
| 337 | + var descendantNodes = rewrittenTree.Root.DescendantNodes(); |
342 | 338 | Assert.Empty(rewrittenTree.Diagnostics);
|
343 |
| - Assert.Equal(3, rewrittenTree.Root.Children.Count); |
| 339 | + var tagHelperNodes = descendantNodes.Where(n => n is MarkupTagHelperElementSyntax tagHelper).Cast<MarkupTagHelperElementSyntax>().ToArray(); |
344 | 340 |
|
345 |
| - var formTagHelper = Assert.IsType<TagHelperBlock>(rewrittenTree.Root.Children[2]); |
346 |
| - Assert.Equal("form", formTagHelper.TagName); |
347 |
| - Assert.Equal(2, formTagHelper.Binding.GetBoundRules(descriptor).Count()); |
| 341 | + var formTagHelper = Assert.Single(tagHelperNodes); |
| 342 | + Assert.Equal("form", formTagHelper.TagHelperInfo.TagName); |
| 343 | + Assert.Equal(2, formTagHelper.TagHelperInfo.BindingResult.GetBoundRules(descriptor).Count()); |
348 | 344 | }
|
349 | 345 |
|
350 | 346 | [Fact]
|
@@ -392,12 +388,13 @@ public void Execute_DirectiveWithQuotes_RewritesTagHelpers_TagHelperMatchesEleme
|
392 | 388 |
|
393 | 389 | // Assert
|
394 | 390 | var rewrittenTree = codeDocument.GetSyntaxTree();
|
| 391 | + var descendantNodes = rewrittenTree.Root.DescendantNodes(); |
395 | 392 | Assert.Empty(rewrittenTree.Diagnostics);
|
396 |
| - Assert.Equal(3, rewrittenTree.Root.Children.Count); |
| 393 | + var tagHelperNodes = descendantNodes.Where(n => n is MarkupTagHelperElementSyntax tagHelper).Cast<MarkupTagHelperElementSyntax>().ToArray(); |
397 | 394 |
|
398 |
| - var formTagHelper = Assert.IsType<TagHelperBlock>(rewrittenTree.Root.Children[2]); |
399 |
| - Assert.Equal("form", formTagHelper.TagName); |
400 |
| - Assert.Equal(2, formTagHelper.Binding.GetBoundRules(descriptor).Count()); |
| 395 | + var formTagHelper = Assert.Single(tagHelperNodes); |
| 396 | + Assert.Equal("form", formTagHelper.TagHelperInfo.TagName); |
| 397 | + Assert.Equal(2, formTagHelper.TagHelperInfo.BindingResult.GetBoundRules(descriptor).Count()); |
401 | 398 | }
|
402 | 399 |
|
403 | 400 | [Fact]
|
@@ -437,15 +434,12 @@ public void Execute_TagHelpersFromCodeDocumentAndFeature_PrefersCodeDocument()
|
437 | 434 |
|
438 | 435 | // Assert
|
439 | 436 | var rewrittenTree = codeDocument.GetSyntaxTree();
|
| 437 | + var descendantNodes = rewrittenTree.Root.DescendantNodes(); |
440 | 438 | Assert.Empty(rewrittenTree.Diagnostics);
|
441 |
| - Assert.Equal(3, rewrittenTree.Root.Children.Count); |
442 |
| - var formTagHelper = Assert.IsType<TagHelperBlock>(rewrittenTree.Root.Children[2]); |
443 |
| - Assert.Equal("form", formTagHelper.TagName); |
444 |
| - Assert.Collection( |
445 |
| - formTagHelper.Children, |
446 |
| - node => Assert.IsNotType<TagHelperBlock>(node), |
447 |
| - node => Assert.IsNotType<TagHelperBlock>(node), |
448 |
| - node => Assert.IsNotType<TagHelperBlock>(node)); |
| 439 | + var tagHelperNodes = descendantNodes.Where(n => n is MarkupTagHelperElementSyntax tagHelper).Cast<MarkupTagHelperElementSyntax>().ToArray(); |
| 440 | + |
| 441 | + var formTagHelper = Assert.Single(tagHelperNodes); |
| 442 | + Assert.Equal("form", formTagHelper.TagHelperInfo.TagName); |
449 | 443 | }
|
450 | 444 |
|
451 | 445 | [Fact]
|
@@ -691,7 +685,7 @@ public void DirectiveVisitor_ExtractsPrefixFromSyntaxTree(
|
691 | 685 | var visitor = new DefaultRazorTagHelperBinderPhase.DirectiveVisitor(tagHelpers: new List<TagHelperDescriptor>());
|
692 | 686 |
|
693 | 687 | // Act
|
694 |
| - visitor.VisitBlock(syntaxTree.Root); |
| 688 | + visitor.Visit(syntaxTree.Root); |
695 | 689 |
|
696 | 690 | // Assert
|
697 | 691 | Assert.Equal(expectedPrefix, visitor.TagHelperPrefix);
|
@@ -857,7 +851,7 @@ public void DirectiveVisitor_FiltersTagHelpersByDirectives(
|
857 | 851 | var visitor = new DefaultRazorTagHelperBinderPhase.DirectiveVisitor((TagHelperDescriptor[])tagHelpers);
|
858 | 852 |
|
859 | 853 | // Act
|
860 |
| - visitor.VisitBlock(syntaxTree.Root); |
| 854 | + visitor.Visit(syntaxTree.Root); |
861 | 855 |
|
862 | 856 | // Assert
|
863 | 857 | Assert.Equal(expected.Count(), visitor.Matches.Count());
|
@@ -1001,7 +995,7 @@ public void ProcessDirectives_CanReturnEmptyDescriptorsBasedOnDirectiveDescripto
|
1001 | 995 | var visitor = new DefaultRazorTagHelperBinderPhase.DirectiveVisitor((TagHelperDescriptor[])tagHelpers);
|
1002 | 996 |
|
1003 | 997 | // Act
|
1004 |
| - visitor.VisitBlock(syntaxTree.Root); |
| 998 | + visitor.Visit(syntaxTree.Root); |
1005 | 999 |
|
1006 | 1000 | // Assert
|
1007 | 1001 | Assert.Empty(visitor.Matches);
|
|
0 commit comments