-
-
Notifications
You must be signed in to change notification settings - Fork 119
Expand file tree
/
Copy pathTestIdQueryExtensionsTests.cs
More file actions
102 lines (80 loc) · 3.38 KB
/
TestIdQueryExtensionsTests.cs
File metadata and controls
102 lines (80 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
namespace Bunit.TestIds;
public class TestIdQueryExtensionsTests : BunitContext
{
[Fact(DisplayName = "Should find span element with matching testid value")]
public void Test001()
{
var cut = Render<Wrapper>(ps => ps.AddChildContent($"""<span data-testid="myTestId"><span>"""));
var elem = cut.FindByTestId("myTestId");
elem.ShouldNotBeNull();
elem.NodeName.ShouldBe("SPAN", StringCompareShould.IgnoreCase);
elem.GetAttribute("data-testid").ShouldBe("myTestId");
}
[Fact(DisplayName = "Should throw exception when testid does not exist in the DOM")]
public void Test002()
{
var cut = Render<Wrapper>(ps => ps.AddChildContent("""<span data-testid="testId"><span>"""));
Should.Throw<TestIdNotFoundException>(() => cut.FindByTestId("myTestId")).TestId.ShouldBe("myTestId");
}
[Fact(DisplayName = "Should throw exception when testid casing is different from DOM")]
public void Test003()
{
var cut = Render<Wrapper>(ps => ps.AddChildContent("""<span data-testid="testId"><span>"""));
Should.Throw<TestIdNotFoundException>(() => cut.FindByTestId("MYTESTID")).TestId.ShouldBe("MYTESTID");
}
[Fact(DisplayName = "Should find first div element with matching testid value")]
public void Test004()
{
var cut = Render<Wrapper>(ps => ps.AddChildContent($"""
<div data-testid="myTestId"></div>
<span data-testid="myTestId"><span>
"""));
var elem = cut.FindByTestId("myTestId");
elem.ShouldNotBeNull();
elem.NodeName.ShouldBe("DIV", StringCompareShould.IgnoreCase);
elem.GetAttribute("data-testid").ShouldBe("myTestId");
}
[Fact(DisplayName = "Should find first non-child div element with matching testid value")]
public void Test005()
{
var cut = Render<Wrapper>(ps => ps.AddChildContent($"""
<div data-testid="myTestId">
<span data-testid="myTestId"><span>
</div>
"""));
var elem = cut.FindByTestId("myTestId");
elem.ShouldNotBeNull();
elem.NodeName.ShouldBe("DIV", StringCompareShould.IgnoreCase);
elem.GetAttribute("data-testid").ShouldBe("myTestId");
}
[Fact(DisplayName = "Should find span element with matching testid attribute name and value")]
public void Test006()
{
var cut = Render<Wrapper>(ps => ps.AddChildContent($"""<span data-testidattr="myTestId"><span>"""));
var elem = cut.FindByTestId("myTestId", opts => opts.TestIdAttribute = "data-testidattr");
elem.ShouldNotBeNull();
elem.NodeName.ShouldBe("SPAN", StringCompareShould.IgnoreCase);
elem.GetAttribute("data-testidattr").ShouldBe("myTestId");
}
[Fact(DisplayName = "Should find span element with equivalent case-insensitive testid value")]
public void Test007()
{
var cut = Render<Wrapper>(ps => ps.AddChildContent("""<span data-testid="myTestId"><span>"""));
var elem = cut.FindByTestId("MYTESTID", opts => opts.ComparisonType = StringComparison.OrdinalIgnoreCase);
elem.ShouldNotBeNull();
elem.NodeName.ShouldBe("SPAN", StringCompareShould.IgnoreCase);
elem.GetAttribute("data-testid").ShouldBe("myTestId");
}
[Fact(DisplayName = "Should find span element with equivalent case-sensitive testid value")]
public void Test008()
{
var cut = Render<Wrapper>(ps => ps.AddChildContent("""
<span data-testid="myTestId"><span>
<span data-testid="MYTESTID"><span>
"""));
var elem = cut.FindByTestId("MYTESTID");
elem.ShouldNotBeNull();
elem.NodeName.ShouldBe("SPAN", StringCompareShould.IgnoreCase);
elem.GetAttribute("data-testid").ShouldBe("MYTESTID");
}
}