Skip to content

Commit a3b435b

Browse files
Introduce RequiredAttributeDescriptorFlags
- Store CaseSensitive in flag - Remove "Common.DirectiveAttribute" from Metadata and store in flag.
1 parent bfc675c commit a3b435b

File tree

20 files changed

+233
-313
lines changed

20 files changed

+233
-313
lines changed

src/Compiler/Microsoft.AspNetCore.Razor.Language/legacyTest/Legacy/TagHelperBlockRewriterTest.cs

Lines changed: 52 additions & 103 deletions
Large diffs are not rendered by default.
Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4+
using System.Collections.Generic;
45
using Xunit;
5-
using static Microsoft.AspNetCore.Razor.Language.CommonMetadata;
66

77
namespace Microsoft.AspNetCore.Razor.Language;
88

@@ -12,34 +12,34 @@ public class DefaultRequiredAttributeDescriptorBuilderTest
1212
public void Build_DisplayNameIsName_NameComparisonFullMatch()
1313
{
1414
// Arrange
15-
var tagHelperBuilder = new TagHelperDescriptorBuilder(TagHelperConventions.DefaultKind, "TestTagHelper", "Test");
16-
var tagMatchingRuleBuilder = new TagMatchingRuleDescriptorBuilder(tagHelperBuilder);
17-
var builder = new RequiredAttributeDescriptorBuilder(tagMatchingRuleBuilder);
18-
19-
builder.Name("asp-action", RequiredAttributeNameComparison.FullMatch);
15+
var builder = TagHelperDescriptorBuilder.Create(TagHelperConventions.DefaultKind, "TestTagHelper", "Test")
16+
.TagMatchingRuleDescriptor(rule => rule
17+
.RequireAttributeDescriptor(attribute => attribute
18+
.Name("asp-action", RequiredAttributeNameComparison.FullMatch)));
2019

2120
// Act
22-
var descriptor = builder.Build();
21+
var tagHelper = builder.Build();
22+
var attribute = tagHelper.TagMatchingRules[0].Attributes[0];
2323

2424
// Assert
25-
Assert.Equal("asp-action", descriptor.DisplayName);
25+
Assert.Equal("asp-action", attribute.DisplayName);
2626
}
2727

2828
[Fact]
2929
public void Build_DisplayNameIsNameWithDots_NameComparisonPrefixMatch()
3030
{
3131
// Arrange
32-
var tagHelperBuilder = new TagHelperDescriptorBuilder(TagHelperConventions.DefaultKind, "TestTagHelper", "Test");
33-
var tagMatchingRuleBuilder = new TagMatchingRuleDescriptorBuilder(tagHelperBuilder);
34-
var builder = new RequiredAttributeDescriptorBuilder(tagMatchingRuleBuilder);
35-
36-
builder.Name("asp-route-", RequiredAttributeNameComparison.PrefixMatch);
32+
var builder = TagHelperDescriptorBuilder.Create(TagHelperConventions.DefaultKind, "TestTagHelper", "Test")
33+
.TagMatchingRuleDescriptor(rule => rule
34+
.RequireAttributeDescriptor(attribute => attribute
35+
.Name("asp-route-", RequiredAttributeNameComparison.PrefixMatch)));
3736

3837
// Act
39-
var descriptor = builder.Build();
38+
var tagHelper = builder.Build();
39+
var attribute = tagHelper.TagMatchingRules[0].Attributes[0];
4040

4141
// Assert
42-
Assert.Equal("asp-route-...", descriptor.DisplayName);
42+
Assert.Equal("asp-route-...", attribute.DisplayName);
4343
}
4444

4545
[Fact]
@@ -49,23 +49,24 @@ public void Metadata_Same()
4949
// they should share the instance.
5050

5151
// Arrange
52-
var tagHelperBuilder = new TagHelperDescriptorBuilder(TagHelperConventions.DefaultKind, "TestTagHelper", "Test");
53-
var tagMatchingRuleBuilder = new TagMatchingRuleDescriptorBuilder(tagHelperBuilder);
54-
55-
var metadata = MetadataCollection.Create(PropertyName("SomeProperty"));
52+
var metadata = MetadataCollection.Create(KeyValuePair.Create<string, string?>("TestKey", "TestValue"));
5653

57-
var builder1 = new RequiredAttributeDescriptorBuilder(tagMatchingRuleBuilder);
58-
var builder2 = new RequiredAttributeDescriptorBuilder(tagMatchingRuleBuilder);
59-
60-
builder1.SetMetadata(metadata);
61-
builder2.SetMetadata(metadata);
54+
var builder = TagHelperDescriptorBuilder.Create(TagHelperConventions.DefaultKind, "TestTagHelper", "Test")
55+
.TagMatchingRuleDescriptor(rule => rule
56+
.RequireAttributeDescriptor(attribute => attribute
57+
.Name("test1")
58+
.SetMetadata(metadata))
59+
.RequireAttributeDescriptor(attribute => attribute
60+
.Name("test2")
61+
.SetMetadata(metadata)));
6262

6363
// Act
64-
var descriptor1 = builder1.Build();
65-
var descriptor2 = builder2.Build();
64+
var tagHelper = builder.Build();
65+
var attribute1 = tagHelper.TagMatchingRules[0].Attributes[0];
66+
var attribute2 = tagHelper.TagMatchingRules[0].Attributes[1];
6667

6768
// Assert
68-
Assert.Same(descriptor1.Metadata, descriptor2.Metadata);
69+
Assert.Same(attribute1.Metadata, attribute2.Metadata);
6970
}
7071

7172
[Fact]
@@ -75,20 +76,21 @@ public void Metadata_NotSame()
7576
// they do not share the instance.
7677

7778
// Arrange
78-
var tagHelperBuilder = new TagHelperDescriptorBuilder(TagHelperConventions.DefaultKind, "TestTagHelper", "Test");
79-
var tagMatchingRuleBuilder = new TagMatchingRuleDescriptorBuilder(tagHelperBuilder);
80-
81-
var builder1 = new RequiredAttributeDescriptorBuilder(tagMatchingRuleBuilder);
82-
var builder2 = new RequiredAttributeDescriptorBuilder(tagMatchingRuleBuilder);
83-
84-
builder1.Metadata.Add(PropertyName("SomeProperty"));
85-
builder2.Metadata.Add(PropertyName("SomeProperty"));
79+
var builder = TagHelperDescriptorBuilder.Create(TagHelperConventions.DefaultKind, "TestTagHelper", "Test")
80+
.TagMatchingRuleDescriptor(rule => rule
81+
.RequireAttributeDescriptor(attribute => attribute
82+
.Name("test1")
83+
.Metadata.Add("TestKey", "TestValue"))
84+
.RequireAttributeDescriptor(attribute => attribute
85+
.Name("test2")
86+
.Metadata.Add("TestKey", "TestValue")));
8687

8788
// Act
88-
var descriptor1 = builder1.Build();
89-
var descriptor2 = builder2.Build();
89+
var tagHelper = builder.Build();
90+
var attribute1 = tagHelper.TagMatchingRules[0].Attributes[0];
91+
var attribute2 = tagHelper.TagMatchingRules[0].Attributes[1];
9092

9193
// Assert
92-
Assert.NotSame(descriptor1.Metadata, descriptor2.Metadata);
94+
Assert.NotSame(attribute1.Metadata, attribute2.Metadata);
9395
}
9496
}

0 commit comments

Comments
 (0)