From c77484c2bef0939b444e3e9b5a897f7c377db81f Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 19 Jan 2023 15:50:54 +0800 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=E4=BF=AE=E5=A4=8D=20IsTracking?= =?UTF-8?q?=20=E6=A8=A1=E5=BC=8F=E4=B8=8B=E8=B0=83=E7=94=A8=20SaveModelAsy?= =?UTF-8?q?nc=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: alex chow --- .../Components/Table/Table.razor.Toolbar.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs index 9ef0a24b89f..4a0608cc3b5 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs @@ -624,9 +624,9 @@ protected async Task ShowEditDialog(ItemChangedType changedType) OnEditAsync = async context => { await ToggleLoading(true); - saved = await SaveModelAsync(context, changedType); if (IsTracking) { + saved = true; if (changedType == ItemChangedType.Add) { var index = InsertRowMode == InsertRowMode.First ? 0 : Rows.Count; @@ -634,9 +634,13 @@ protected async Task ShowEditDialog(ItemChangedType changedType) } await InvokeItemsChanged(); } - else if (saved) + else { - await QueryAsync(); + saved = await SaveModelAsync(context, changedType); + if (saved) + { + await QueryAsync(); + } } await ToggleLoading(false); return saved; From 39a2db28ec931d062214b81386346af1fb4eb938 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 19 Jan 2023 16:10:47 +0800 Subject: [PATCH 2/2] test: update add unit test on IsTracking mode Co-authored-by: alex chow --- test/UnitTest/Components/TableDialogTest.cs | 37 ++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/test/UnitTest/Components/TableDialogTest.cs b/test/UnitTest/Components/TableDialogTest.cs index 01ae82e299d..1275f05b7a7 100644 --- a/test/UnitTest/Components/TableDialogTest.cs +++ b/test/UnitTest/Components/TableDialogTest.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Website: https://www.blazor.zone or https://argozhang.github.io/ +using AngleSharp.Dom; using BootstrapBlazor.Shared; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; @@ -59,10 +60,11 @@ public async Task EditAsync_Ok() // 编辑弹窗逻辑 var form = cut.Find(".modal-body form"); await cut.InvokeAsync(() => form.Submit()); + var modal = cut.FindComponent(); + await cut.InvokeAsync(() => modal.Instance.CloseCallback()); // 内置数据服务取消回调 await cut.InvokeAsync(() => table.Instance.EditAsync()); - var modal = cut.FindComponent(); await cut.InvokeAsync(() => modal.Instance.CloseCallback()); // 自定义数据服务取消回调测试 @@ -99,6 +101,39 @@ public async Task EditAsync_Ok() await cut.InvokeAsync(() => table.Instance.AddAsync()); await cut.InvokeAsync(() => modal.Instance.CloseCallback()); Assert.True(closed); + + // IsTracking mode + table.SetParametersAndRender(pb => + { + pb.Add(a => a.IsTracking, true); + }); + // Add 弹窗 + await cut.InvokeAsync(() => table.Instance.AddAsync()); + + // 编辑弹窗逻辑 + input = cut.Find(".modal-body form input.form-control"); + await cut.InvokeAsync(() => input.Change("Test_Name")); + + form = cut.Find(".modal-body form"); + await cut.InvokeAsync(() => form.Submit()); + await cut.InvokeAsync(() => modal.Instance.CloseCallback()); + + // 更新插入模式 + table.SetParametersAndRender(pb => + { + pb.Add(a => a.InsertRowMode, InsertRowMode.First); + }); + + // Add 弹窗 + await cut.InvokeAsync(() => table.Instance.AddAsync()); + + // 编辑弹窗逻辑 + input = cut.Find(".modal-body form input.form-control"); + await cut.InvokeAsync(() => input.Change("Test_Name")); + + form = cut.Find(".modal-body form"); + await cut.InvokeAsync(() => form.Submit()); + await cut.InvokeAsync(() => modal.Instance.CloseCallback()); } private class MockEFCoreDataService : IDataService, IEntityFrameworkCoreDataService