using ZB.MOM.WW.ScadaBridge.CentralUI.Components.Shared;
namespace ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Shared;
/// Custom completions belong to the dialog whose typed context was issued.
public sealed class DialogContextIdentityTests
{
/// A canceled custom context cannot confirm or cancel a subsequently opened dialog.
[Theory]
[InlineData(false)]
[InlineData(true)]
public async Task StaleCustomContext_DoesNotResolveNewDialog(bool staleCancel)
{
var service = new DialogService();
DialogContext first = null!;
var pendingFirst = service.ShowAsync("First", context => { first = context; return _ => { }; });
first.Cancel();
Assert.False(await pendingFirst);
DialogContext second = null!;
var pendingSecond = service.ShowAsync("Second", context => { second = context; return _ => { }; });
if (staleCancel) first.Cancel(); else first.Close(true);
Assert.False(pendingSecond.IsCompleted);
Assert.Equal("Second", service.Current?.Title);
second.Close(true);
Assert.True(await pendingSecond);
Assert.Null(service.Current);
}
}