Skip to content
This repository was archived by the owner on Feb 23, 2021. It is now read-only.

Commit 2097280

Browse files
author
N. Taylor Mullen
committed
- Added the new `TagHelperRequiredAttributeDescriptor` to the VisualStudio validation test.
1 parent 9ba6b5d commit 2097280

1 file changed

Lines changed: 71 additions & 5 deletions

File tree

test/dotnet-razor-tooling.Test/VisualStudioProtocolTest.cs

Lines changed: 71 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,24 @@ public void TagHelperDescrictorsAreCompatibleWithPinnedVisualStudioVersion()
2222
AllowedChildren = new[] { "tr", "td" },
2323
AssemblyName = "CustomAssembly",
2424
Prefix = "th:",
25-
RequiredAttributes = new[] { "runat" },
25+
RequiredAttributes = new[]
26+
{
27+
new TagHelperRequiredAttributeDescriptor
28+
{
29+
Name = "runat"
30+
},
31+
new TagHelperRequiredAttributeDescriptor
32+
{
33+
Name = "condition",
34+
Value = "(",
35+
ValueComparison = TagHelperRequiredAttributeValueComparison.PrefixMatch
36+
},
37+
new TagHelperRequiredAttributeDescriptor
38+
{
39+
Name = "runat-",
40+
NameComparison = TagHelperRequiredAttributeNameComparison.PrefixMatch
41+
},
42+
},
2643
RequiredParent = "body",
2744
TagName = "custom-table",
2845
TagStructure = TagStructure.NormalOrSelfClosing,
@@ -69,7 +86,24 @@ public void TagHelperDescrictorsAreCompatibleWithPinnedVisualStudioVersion()
6986
AllowedChildren = new[] { "tr", "td" },
7087
AssemblyName = "CustomAssembly",
7188
Prefix = "th:",
72-
RequiredAttributes = new[] { "runat" },
89+
RequiredAttributes = new[]
90+
{
91+
new VisualStudioTagHelperRequiredAttributeDescriptor
92+
{
93+
Name = "runat"
94+
},
95+
new VisualStudioTagHelperRequiredAttributeDescriptor
96+
{
97+
Name = "condition",
98+
Value = "(",
99+
ValueComparison = VisualStudioTagHelperRequiredAttributeValueComparison.PrefixMatch
100+
},
101+
new VisualStudioTagHelperRequiredAttributeDescriptor
102+
{
103+
Name = "runat-",
104+
NameComparison = VisualStudioTagHelperRequiredAttributeNameComparison.PrefixMatch
105+
},
106+
},
73107
RequiredParent = "body",
74108
TagName = "custom-table",
75109
TagStructure = VisualStudioTagStructure.NormalOrSelfClosing,
@@ -121,7 +155,19 @@ public void TagHelperDescrictorsAreCompatibleWithPinnedVisualStudioVersion()
121155
Assert.Equal(expectedVSDescriptor.AllowedChildren, vsDescriptor.AllowedChildren, StringComparer.Ordinal);
122156
Assert.Equal(expectedVSDescriptor.AssemblyName, vsDescriptor.AssemblyName, StringComparer.Ordinal);
123157
Assert.Equal(expectedVSDescriptor.Prefix, vsDescriptor.Prefix, StringComparer.Ordinal);
124-
Assert.Equal(expectedVSDescriptor.RequiredAttributes, vsDescriptor.RequiredAttributes, StringComparer.Ordinal);
158+
159+
var requiredAttributes = vsDescriptor.RequiredAttributes.ToArray();
160+
var expectedRequiredAttributes = expectedVSDescriptor.RequiredAttributes.ToArray();
161+
for (var i = 0; i < requiredAttributes.Length; i++)
162+
{
163+
var requiredAttribute = requiredAttributes[i];
164+
var expectedRequiredAttribute = expectedRequiredAttributes[i];
165+
Assert.Equal(expectedRequiredAttribute.Name, requiredAttribute.Name, StringComparer.Ordinal);
166+
Assert.Equal(expectedRequiredAttribute.NameComparison, requiredAttribute.NameComparison);
167+
Assert.Equal(expectedRequiredAttribute.Value, requiredAttribute.Value, StringComparer.Ordinal);
168+
Assert.Equal(expectedRequiredAttribute.ValueComparison, requiredAttribute.ValueComparison);
169+
}
170+
125171
Assert.Equal(expectedVSDescriptor.RequiredParent, vsDescriptor.RequiredParent, StringComparer.Ordinal);
126172
Assert.Equal(expectedVSDescriptor.TagName, vsDescriptor.TagName, StringComparer.Ordinal);
127173
Assert.Equal(expectedVSDescriptor.TagStructure, vsDescriptor.TagStructure);
@@ -250,7 +296,8 @@ private class VisualStudioTagHelperDescriptor
250296
private string _assemblyName;
251297
private IEnumerable<VisualStudioTagHelperAttributeDescriptor> _attributes =
252298
Enumerable.Empty<VisualStudioTagHelperAttributeDescriptor>();
253-
private IEnumerable<string> _requiredAttributes = Enumerable.Empty<string>();
299+
private IEnumerable<VisualStudioTagHelperRequiredAttributeDescriptor> _requiredAttributes =
300+
Enumerable.Empty<VisualStudioTagHelperRequiredAttributeDescriptor>();
254301

255302
public string Prefix
256303
{
@@ -339,7 +386,7 @@ public IEnumerable<VisualStudioTagHelperAttributeDescriptor> Attributes
339386
_attributes = value;
340387
}
341388
}
342-
public IEnumerable<string> RequiredAttributes
389+
public IEnumerable<VisualStudioTagHelperRequiredAttributeDescriptor> RequiredAttributes
343390
{
344391
get
345392
{
@@ -366,6 +413,25 @@ public enum VisualStudioTagStructure
366413
NormalOrSelfClosing,
367414
WithoutEndTag
368415
}
416+
public class VisualStudioTagHelperRequiredAttributeDescriptor
417+
{
418+
public string Name { get; set; }
419+
public VisualStudioTagHelperRequiredAttributeNameComparison NameComparison { get; set; }
420+
public string Value { get; set; }
421+
public VisualStudioTagHelperRequiredAttributeValueComparison ValueComparison { get; set; }
422+
}
423+
public enum VisualStudioTagHelperRequiredAttributeNameComparison
424+
{
425+
FullMatch,
426+
PrefixMatch,
427+
}
428+
public enum VisualStudioTagHelperRequiredAttributeValueComparison
429+
{
430+
None,
431+
FullMatch,
432+
PrefixMatch,
433+
SuffixMatch,
434+
}
369435
#endregion
370436
}
371437
}

0 commit comments

Comments
 (0)