Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 35 additions & 4 deletions WheelWizard.Test/Views/Shell/Startup/DesktopStartupTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public async Task InstalledResources_ShowTheWindowBeforeStartupActions()
}

[Fact]
public async Task DeclinedResourceSetup_ShutsDownWithoutOpeningMainWindow()
public async Task DeclinedResourceSetup_ShutsDownTheOpenedMainWindow()
{
var fixture = new Fixture();
fixture.Resources.GetResolvedResourcePath().Returns(new OperationError { Message = "Missing" });
Expand All @@ -49,12 +49,12 @@ public async Task DeclinedResourceSetup_ShutsDownWithoutOpeningMainWindow()
await fixture.Coordinator.StartAsync(fixture.Desktop, new StartupOptions(null, false), CancellationToken.None);

fixture.Desktop.Received(1).Shutdown();
await fixture.Windows.DidNotReceiveWithAnyArgs().ShowAsync(default!, default);
await fixture.Windows.Received(1).ShowAsync(fixture.Desktop, Arg.Any<CancellationToken>());
await fixture.Startup.DidNotReceiveWithAnyArgs().RunAsync(default!, default);
}

[Fact]
public async Task ShutdownDuringResourceSetup_DoesNotOpenAWindowAfterCompletion()
public async Task ShutdownDuringResourceSetup_DoesNotRunStartupAfterCompletion()
{
var fixture = new Fixture();
fixture.Resources.GetResolvedResourcePath().Returns(new OperationError { Message = "Missing" });
Expand All @@ -66,10 +66,41 @@ public async Task ShutdownDuringResourceSetup_DoesNotOpenAWindowAfterCompletion(
await start;
setup.SetResult(true);

await fixture.Windows.DidNotReceiveWithAnyArgs().ShowAsync(default!, default);
await fixture.Windows.Received(1).ShowAsync(fixture.Desktop, Arg.Any<CancellationToken>());
await fixture.Startup.DidNotReceiveWithAnyArgs().RunAsync(default!, default);
}

[Fact]
public async Task MissingResources_ShowSetupInsideTheOpenedWindowBeforeStartup()
{
var fixture = new Fixture();
fixture.Resources.GetResolvedResourcePath().Returns(new OperationError { Message = "Missing" });
var sequence = new List<string>();
fixture
.Windows.ShowAsync(fixture.Desktop, Arg.Any<CancellationToken>())
.Returns(_ =>
{
sequence.Add("window");
return Task.CompletedTask;
});
fixture
.Setup.ShowAsync()
.Returns(_ =>
{
sequence.Add("setup");
return Task.FromResult(true);
});
fixture
.Startup.RunAsync(Arg.Any<StartupOptions>(), Arg.Any<CancellationToken>())
.Returns(_ =>
{
sequence.Add("startup");
return Task.CompletedTask;
});
await fixture.Coordinator.StartAsync(fixture.Desktop, new StartupOptions(null, false), CancellationToken.None);
Assert.Equal(["window", "setup", "startup"], sequence);
}

private sealed class Fixture
{
public IClassicDesktopStyleApplicationLifetime Desktop { get; } = Substitute.For<IClassicDesktopStyleApplicationLifetime>();
Expand Down
12 changes: 6 additions & 6 deletions WheelWizard.UI.Test/ApplicationCompositionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,6 @@ public async Task MainWindowAndPages_ConstructWithoutStaticServiceInitialization
services.GetRequiredService<MiiControlThemes>().Install(Application.Current!.Resources);
services.GetRequiredService<WindowAppearance>().Install(Application.Current.Resources);
var desktop = Substitute.For<IClassicDesktopStyleApplicationLifetime>();
PopupWindow? confirmation = null;
using var popupOpened = Window.WindowOpenedEvent.AddClassHandler<PopupWindow>((popup, _) => confirmation = popup);
var windows = services.GetRequiredService<IMainWindowService>();
try
{
Expand Down Expand Up @@ -177,9 +175,10 @@ public async Task MainWindowAndPages_ConstructWithoutStaticServiceInitialization
Assert.Equal("Settings", settingsPage.FindControl<TextBlock>("SettingsTitle")!.Text);
// Cancel leaves both the setting and the selected language unchanged.
languages.SelectedIndex = 1;
var cancelPopup = Assert.IsType<PopupWindow>(confirmation);
var cancelQuestion = Assert.IsType<YesNoWindow>(cancelPopup.FindControl<ContentPresenter>("PopupContent")!.Content);
var cancelQuestion = Assert.IsType<YesNoWindow>(original.Modals.TopModal);
var cancelClosed = cancelQuestion.ShowDialog();
cancelQuestion.FindControl<ActionButton>("NoButton")!.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
await cancelClosed.WaitAsync(TimeSpan.FromSeconds(2));
await Dispatcher.UIThread.InvokeAsync(() => { }, DispatcherPriority.Background);
Assert.Equal("en", settings.WW_LANGUAGE.Value);
Assert.Equal(0, languages.SelectedIndex);
Expand All @@ -189,9 +188,10 @@ public async Task MainWindowAndPages_ConstructWithoutStaticServiceInitialization
languages.SelectedItem = languages.Items.Single(item =>
item!.ToString() == LocalizationProvider.GetLanguageDisplayName(language)
);
var popup = Assert.IsType<PopupWindow>(confirmation);
var question = Assert.IsType<YesNoWindow>(popup.FindControl<ContentPresenter>("PopupContent")!.Content);
var question = Assert.IsType<YesNoWindow>(original.Modals.TopModal);
var questionClosed = question.ShowDialog();
question.FindControl<ActionButton>("YesButton")!.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
await questionClosed.WaitAsync(TimeSpan.FromSeconds(2));
await Dispatcher.UIThread.InvokeAsync(() => { }, DispatcherPriority.Background);
original.UpdateLayout();
Assert.Equal(language, settings.WW_LANGUAGE.Value);
Expand Down
Loading
Loading