Skip to content

Commit d2c5af6

Browse files
add unit test for table on tracking mode (#340)
Co-authored-by: alex chow <zhouchuanglin@gmail.com>
1 parent 5df3396 commit d2c5af6

2 files changed

Lines changed: 43 additions & 4 deletions

File tree

src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -624,19 +624,23 @@ protected async Task ShowEditDialog(ItemChangedType changedType)
624624
OnEditAsync = async context =>
625625
{
626626
await ToggleLoading(true);
627-
saved = await SaveModelAsync(context, changedType);
628627
if (IsTracking)
629628
{
629+
saved = true;
630630
if (changedType == ItemChangedType.Add)
631631
{
632632
var index = InsertRowMode == InsertRowMode.First ? 0 : Rows.Count;
633633
Rows.Insert(index, EditModel);
634634
}
635635
await InvokeItemsChanged();
636636
}
637-
else if (saved)
637+
else
638638
{
639-
await QueryAsync();
639+
saved = await SaveModelAsync(context, changedType);
640+
if (saved)
641+
{
642+
await QueryAsync();
643+
}
640644
}
641645
await ToggleLoading(false);
642646
return saved;

test/UnitTest/Components/TableDialogTest.cs

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33
// Website: https://www.blazor.zone or https://argozhang.github.io/
44

5+
using AngleSharp.Dom;
56
using BootstrapBlazor.Shared;
67
using Microsoft.Extensions.DependencyInjection;
78
using Microsoft.Extensions.Localization;
@@ -59,10 +60,11 @@ public async Task EditAsync_Ok()
5960
// 编辑弹窗逻辑
6061
var form = cut.Find(".modal-body form");
6162
await cut.InvokeAsync(() => form.Submit());
63+
var modal = cut.FindComponent<Modal>();
64+
await cut.InvokeAsync(() => modal.Instance.CloseCallback());
6265

6366
// 内置数据服务取消回调
6467
await cut.InvokeAsync(() => table.Instance.EditAsync());
65-
var modal = cut.FindComponent<Modal>();
6668
await cut.InvokeAsync(() => modal.Instance.CloseCallback());
6769

6870
// 自定义数据服务取消回调测试
@@ -99,6 +101,39 @@ public async Task EditAsync_Ok()
99101
await cut.InvokeAsync(() => table.Instance.AddAsync());
100102
await cut.InvokeAsync(() => modal.Instance.CloseCallback());
101103
Assert.True(closed);
104+
105+
// IsTracking mode
106+
table.SetParametersAndRender(pb =>
107+
{
108+
pb.Add(a => a.IsTracking, true);
109+
});
110+
// Add 弹窗
111+
await cut.InvokeAsync(() => table.Instance.AddAsync());
112+
113+
// 编辑弹窗逻辑
114+
input = cut.Find(".modal-body form input.form-control");
115+
await cut.InvokeAsync(() => input.Change("Test_Name"));
116+
117+
form = cut.Find(".modal-body form");
118+
await cut.InvokeAsync(() => form.Submit());
119+
await cut.InvokeAsync(() => modal.Instance.CloseCallback());
120+
121+
// 更新插入模式
122+
table.SetParametersAndRender(pb =>
123+
{
124+
pb.Add(a => a.InsertRowMode, InsertRowMode.First);
125+
});
126+
127+
// Add 弹窗
128+
await cut.InvokeAsync(() => table.Instance.AddAsync());
129+
130+
// 编辑弹窗逻辑
131+
input = cut.Find(".modal-body form input.form-control");
132+
await cut.InvokeAsync(() => input.Change("Test_Name"));
133+
134+
form = cut.Find(".modal-body form");
135+
await cut.InvokeAsync(() => form.Submit());
136+
await cut.InvokeAsync(() => modal.Instance.CloseCallback());
102137
}
103138

104139
private class MockEFCoreDataService : IDataService<Foo>, IEntityFrameworkCoreDataService

0 commit comments

Comments
 (0)