|
1 | | -// Licensed to the .NET Foundation under one or more agreements. |
| 1 | +// Licensed to the .NET Foundation under one or more agreements. |
2 | 2 | // The .NET Foundation licenses this file to you under the Apache 2.0 License |
3 | 3 | // See the LICENSE file in the project root for more information. |
4 | 4 | // Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone |
5 | 5 |
|
6 | 6 | using Microsoft.AspNetCore.Components.Web; |
| 7 | +using Microsoft.Extensions.Options; |
7 | 8 |
|
8 | 9 | namespace UnitTest.Components; |
9 | 10 |
|
@@ -57,10 +58,8 @@ await cut.InvokeAsync(() => |
57 | 58 | Assert.NotNull(alert.Id); |
58 | 59 |
|
59 | 60 | var message = cut.FindComponent<Message>(); |
60 | | - await message.Instance.Dismiss(alert.Id); |
| 61 | + await cut.InvokeAsync(() => message.Instance.Dismiss(alert.Id)); |
61 | 62 | Assert.True(dismiss); |
62 | | - |
63 | | - await cut.InvokeAsync(() => message.Instance.Clear()); |
64 | 63 | } |
65 | 64 |
|
66 | 65 | [Fact] |
@@ -98,7 +97,7 @@ await cut.InvokeAsync(() => service.Show(new MessageOption() |
98 | 97 |
|
99 | 98 | await cut.Instance.Dismiss(alert.Id); |
100 | 99 | await cut.Instance.Dismiss("test_id"); |
101 | | - await cut.InvokeAsync(() => cut.Instance.Clear()); |
| 100 | + await cut.InvokeAsync(() => cut.Instance.Clear(alert.Id)); |
102 | 101 |
|
103 | 102 | await cut.InvokeAsync(() => service.Show(new MessageOption() |
104 | 103 | { |
@@ -133,4 +132,44 @@ await cut.InvokeAsync(() => service.Show(new MessageOption() |
133 | 132 | ShowMode = MessageShowMode.Single |
134 | 133 | }, cut.Instance)); |
135 | 134 | } |
| 135 | + |
| 136 | + [Fact] |
| 137 | + public async Task ForceDelay_Ok() |
| 138 | + { |
| 139 | + var service = Context.Services.GetRequiredService<MessageService>(); |
| 140 | + var cut = Context.RenderComponent<Message>(); |
| 141 | + var option = new MessageOption() |
| 142 | + { |
| 143 | + Content = "Test Content", |
| 144 | + IsAutoHide = false, |
| 145 | + ShowDismiss = true, |
| 146 | + Icon = "fa-solid fa-font-awesome", |
| 147 | + ForceDelay = true, |
| 148 | + Delay = 2000 |
| 149 | + }; |
| 150 | + await cut.InvokeAsync(() => service.Show(option, cut.Instance)); |
| 151 | + Assert.Contains("data-bb-delay=\"2000\"", cut.Markup); |
| 152 | + |
| 153 | + var alert = cut.Find(".alert"); |
| 154 | + Assert.NotNull(alert); |
| 155 | + Assert.NotNull(alert.Id); |
| 156 | + await cut.InvokeAsync(() => cut.Instance.Clear(alert.Id)); |
| 157 | + |
| 158 | + option.ForceDelay = false; |
| 159 | + await cut.InvokeAsync(() => service.Show(option, cut.Instance)); |
| 160 | + Assert.Contains("data-bb-delay=\"4000\"", cut.Markup); |
| 161 | + await cut.InvokeAsync(() => cut.Instance.Clear(alert.Id)); |
| 162 | + |
| 163 | + // 更新 Options 值 |
| 164 | + var options = Context.Services.GetRequiredService<IOptionsMonitor<BootstrapBlazorOptions>>(); |
| 165 | + options.CurrentValue.MessageDelay = 1000; |
| 166 | + await cut.InvokeAsync(() => service.Show(option, cut.Instance)); |
| 167 | + Assert.Contains("data-bb-delay=\"1000\"", cut.Markup); |
| 168 | + await cut.InvokeAsync(() => cut.Instance.Clear(alert.Id)); |
| 169 | + |
| 170 | + options.CurrentValue.MessageDelay = 0; |
| 171 | + await cut.InvokeAsync(() => service.Show(option, cut.Instance)); |
| 172 | + Assert.Contains("data-bb-delay=\"1000\"", cut.Markup); |
| 173 | + await cut.InvokeAsync(() => cut.Instance.Clear(alert.Id)); |
| 174 | + } |
136 | 175 | } |
0 commit comments