Skip to content

Commit aff9e15

Browse files
committed
test: 增加单元测试
1 parent c79c000 commit aff9e15

File tree

1 file changed

+75
-2
lines changed

1 file changed

+75
-2
lines changed

test/UnitTest/Components/CascaderTest.cs

Lines changed: 75 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,68 @@ namespace UnitTest.Components;
88
public class CascaderTest : BootstrapBlazorTestBase
99
{
1010
[Fact]
11-
public void ValidateForm_OK()
11+
public async Task ValidateForm_OK()
1212
{
13-
var foo = new Foo();
13+
var foo = new Foo() { Name = "test1" };
14+
var valid = false;
15+
var invalid = false;
16+
var items = new List<CascaderItem>()
17+
{
18+
new() { Text = "Test1", Value = "test1" },
19+
new() { Text = "Test2", Value = "test2" }
20+
};
1421
var cut = Context.RenderComponent<ValidateForm>(pb =>
1522
{
23+
pb.Add(a => a.OnValidSubmit, context =>
24+
{
25+
valid = true;
26+
return Task.CompletedTask;
27+
});
28+
pb.Add(a => a.OnInvalidSubmit, context =>
29+
{
30+
invalid = true;
31+
return Task.CompletedTask;
32+
});
1633
pb.Add(a => a.Model, foo);
1734
pb.AddChildContent<Cascader<string>>(pb =>
1835
{
36+
pb.Add(a => a.Items, items);
1937
pb.Add(a => a.DisplayText, "Test_DisplayText");
2038
pb.Add(a => a.ShowLabel, true);
39+
pb.Add(a => a.IsClearable, true);
40+
pb.Add(a => a.Value, foo.Name);
41+
pb.Add(a => a.ValueExpression, Utility.GenerateValueExpression(foo, "Name", typeof(string)));
42+
pb.Add(a => a.OnValueChanged, v =>
43+
{
44+
foo.Name = v;
45+
return Task.CompletedTask;
46+
});
2147
});
2248
});
2349
cut.Contains("Test_DisplayText");
50+
51+
await cut.InvokeAsync(() =>
52+
{
53+
var form = cut.Find("form");
54+
form.Submit();
55+
});
56+
Assert.True(valid);
57+
58+
var span = cut.Find(".clear-icon");
59+
Assert.True(span.ClassList.Contains("text-success"));
60+
61+
foo.Name = null;
62+
var cascader = cut.FindComponent<Cascader<string>>();
63+
cascader.SetParametersAndRender();
64+
await cut.InvokeAsync(() =>
65+
{
66+
var form = cut.Find("form");
67+
form.Submit();
68+
});
69+
Assert.True(invalid);
70+
71+
span = cut.Find(".clear-icon");
72+
Assert.True(span.ClassList.Contains("text-danger"));
2473
}
2574

2675
[Fact]
@@ -29,8 +78,12 @@ public void Color_Ok()
2978
var cut = Context.RenderComponent<Cascader<string>>(pb =>
3079
{
3180
pb.Add(a => a.Color, Color.Success);
81+
pb.Add(a => a.IsClearable, true);
3282
});
3383
cut.Contains("border-success");
84+
85+
var span = cut.Find(".clear-icon");
86+
Assert.True(span.ClassList.Contains("text-success"));
3487
}
3588

3689
[Fact]
@@ -129,12 +182,32 @@ public void IsDisabled_Ok()
129182
var cut = Context.RenderComponent<Cascader<string>>(pb =>
130183
{
131184
pb.Add(a => a.IsDisabled, true);
185+
pb.Add(a => a.IsClearable, true);
132186
});
133187

134188
var input = cut.Find(".dropdown > input");
135189
Assert.True(input.HasAttribute("disabled"));
136190
}
137191

192+
[Fact]
193+
public async Task IsClearable_Ok()
194+
{
195+
var isClear = false;
196+
var cut = Context.RenderComponent<Cascader<string>>(pb =>
197+
{
198+
pb.Add(a => a.IsClearable, true);
199+
pb.Add(a => a.OnClearAsync, () =>
200+
{
201+
isClear = true;
202+
return Task.CompletedTask;
203+
});
204+
});
205+
206+
var clearButton = cut.Find(".clear-icon");
207+
await cut.InvokeAsync(() => clearButton.Click());
208+
Assert.True(isClear);
209+
}
210+
138211
[Fact]
139212
public void SubCascader_NullItems()
140213
{

0 commit comments

Comments
 (0)