Public Access
Give the application a settings area built from what really exists
This commit is contained in:
@@ -207,24 +207,35 @@ public sealed class NavRailTests : IAsyncLifetime
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>Settings, Vaults and Preferences each land on the screen they promise, and shut the popover.</summary>
|
||||
/// <summary>
|
||||
/// Settings, Vaults and Preferences each enter settings mode on the page they promise, and shut the
|
||||
/// popover behind them.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Three <see cref="Fact"/>s over one private body rather than a <see cref="Theory"/>: <c>ShellScreen</c>
|
||||
/// <para>
|
||||
/// v5c: these three used to land on a bare <c>ShellScreen</c> — Settings and Preferences on the very
|
||||
/// same one, since the mock's own Settings area did not exist yet. Now that it does, each opens the
|
||||
/// settings mode on its own page — see <see cref="MainWindowViewModel.EnterSettings"/> — and "Settings"
|
||||
/// and "Preferences" are no longer the same click.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// Three <see cref="Fact"/>s over one private body rather than a <see cref="Theory"/>: <c>SettingsPage</c>
|
||||
/// is <c>internal</c>, and a public theory method may not carry an internal type in its signature.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
[Fact]
|
||||
public Task ThePopoversSettingsRow_LandsOnPreferencesAndClosesThePopover() =>
|
||||
APopoverRowLandsOnAsync("Settings", ShellScreen.Preferences);
|
||||
public Task ThePopoversSettingsRow_EntersSettingsOnGeneralAndClosesThePopover() =>
|
||||
APopoverRowLandsOnAsync("Settings", SettingsPage.General);
|
||||
|
||||
[Fact]
|
||||
public Task ThePopoversVaultsRow_LandsOnVaultsAndClosesThePopover() =>
|
||||
APopoverRowLandsOnAsync("Vaults", ShellScreen.Vaults);
|
||||
public Task ThePopoversVaultsRow_EntersSettingsOnVaultsAndClosesThePopover() =>
|
||||
APopoverRowLandsOnAsync("Vaults", SettingsPage.Vaults);
|
||||
|
||||
[Fact]
|
||||
public Task ThePopoversPreferencesRow_LandsOnPreferencesAndClosesThePopover() =>
|
||||
APopoverRowLandsOnAsync("Preferences", ShellScreen.Preferences);
|
||||
public Task ThePopoversPreferencesRow_EntersSettingsOnPreferencesAndClosesThePopover() =>
|
||||
APopoverRowLandsOnAsync("Preferences", SettingsPage.Preferences);
|
||||
|
||||
private Task APopoverRowLandsOnAsync(string label, ShellScreen target) =>
|
||||
private Task APopoverRowLandsOnAsync(string label, SettingsPage target) =>
|
||||
OnTheRailAsync((rail, window) =>
|
||||
{
|
||||
var chip = UserChip(rail);
|
||||
@@ -232,19 +243,20 @@ public sealed class NavRailTests : IAsyncLifetime
|
||||
|
||||
Click(PopoverRow(window, label), window);
|
||||
|
||||
shell.Screen.ShouldBe(target);
|
||||
shell.IsSettingsMode.ShouldBeTrue();
|
||||
shell.ActiveSettingsPage.ShouldBe(target);
|
||||
shell.IsShowingPages.ShouldBeTrue();
|
||||
FlyoutBase.GetAttachedFlyout(chip)!.IsOpen.ShouldBeFalse("a navigation row shuts the popover behind it");
|
||||
});
|
||||
|
||||
/// <remarks>
|
||||
/// Through Preferences rather than a direct <c>SignOutCommand</c> — see
|
||||
/// <see cref="MainWindowViewModel.SignOutFromPopover"/> for why: the confirmation card the mock has no
|
||||
/// room for at all is drawn inline on that one screen while the vault is unlocked, and arming it from
|
||||
/// anywhere else would be a card raised nobody could see.
|
||||
/// Through the Account settings page rather than a direct <c>SignOutCommand</c> — see
|
||||
/// <see cref="MainWindowViewModel.SignOutFromPopover"/> for why: the confirmation card is drawn inline on
|
||||
/// that one page while the vault is unlocked, and arming it from anywhere else would be a card raised
|
||||
/// nobody could see.
|
||||
/// </remarks>
|
||||
[Fact]
|
||||
public async Task ThePopoversLogoutRow_GoesToPreferencesAndArmsTheSignOutConfirmation()
|
||||
public async Task ThePopoversLogoutRow_EntersSettingsOnAccountAndArmsTheSignOutConfirmation()
|
||||
{
|
||||
await OnTheRailAsync((rail, window) =>
|
||||
{
|
||||
@@ -253,7 +265,8 @@ public sealed class NavRailTests : IAsyncLifetime
|
||||
|
||||
Click(PopoverRow(window, "Logout"), window);
|
||||
|
||||
shell.Screen.ShouldBe(ShellScreen.Preferences);
|
||||
shell.IsSettingsMode.ShouldBeTrue();
|
||||
shell.ActiveSettingsPage.ShouldBe(SettingsPage.Account);
|
||||
shell.IsConfirmingSignOut.ShouldBeTrue();
|
||||
FlyoutBase.GetAttachedFlyout(chip)!.IsOpen.ShouldBeFalse();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user