Files
MBN_STOCK_WEBVIEW/tests/MBN_STOCK_WEBVIEW.LegacyWeb.Tests/LegacyNamedPlaylistDispatchFailureContractTests.cs

101 lines
3.8 KiB
C#

namespace MBN_STOCK_WEBVIEW.LegacyWeb.Tests;
public sealed class LegacyNamedPlaylistDispatchFailureContractTests
{
private static readonly string RepositoryRoot = FindRepositoryRoot();
private static readonly string MainWindow = File.ReadAllText(Path.Combine(
RepositoryRoot,
"src",
"MBN_STOCK_WEBVIEW.LegacyParityApp",
"MainWindow.xaml.cs"));
[Fact]
public void NativeRejectionsAndUnexpectedExceptionsTerminateCorrelatedCommands()
{
Assert.Contains(
"PostState(IsNamedPlaylistModalIntent(intent)",
MainWindow,
StringComparison.Ordinal);
Assert.Contains(
"var failureState = ReportIntentFailure(",
MainWindow,
StringComparison.Ordinal);
Assert.Contains(
"ObserveOperatorMutationQuarantine(failureState);",
MainWindow,
StringComparison.Ordinal);
Assert.Contains(
"writeOutcomeMayBeUnknown: dispatchStarted",
MainWindow,
StringComparison.Ordinal);
Assert.Contains(
"_controller.ReportNamedPlaylistWriteOutcomeUnknown(",
MainWindow,
StringComparison.Ordinal);
Assert.Contains("RefreshNamedPlaylistsForDispatchAsync(", MainWindow,
StringComparison.Ordinal);
Assert.Contains("SelectNamedPlaylistForDispatch(", MainWindow,
StringComparison.Ordinal);
Assert.Contains("CreateNamedPlaylistForDispatchAsync(", MainWindow,
StringComparison.Ordinal);
Assert.Contains("DeleteNamedPlaylistForDispatchAsync(", MainWindow,
StringComparison.Ordinal);
Assert.Contains("_controller.CompleteNamedPlaylistDispatch(", MainWindow,
StringComparison.Ordinal);
Assert.Contains(
"_controller.ReportNamedPlaylistCommandFailure(\n" +
" \"load-named-playlist-by-id\"",
MainWindow.Replace("\r\n", "\n", StringComparison.Ordinal),
StringComparison.Ordinal);
Assert.Contains(
"_controller.ReportNamedPlaylistCommandFailure(\n" +
" \"save-current-named-playlist-to\"",
MainWindow.Replace("\r\n", "\n", StringComparison.Ordinal),
StringComparison.Ordinal);
}
[Fact]
public void SelectionUsesAnExactReceiptWithoutDisablingTheSecondDoubleClick()
{
var normalized = MainWindow.Replace("\r\n", "\n", StringComparison.Ordinal);
Assert.Contains(
"LegacySelectNamedPlaylistIntent selection =>\n" +
" SelectNamedPlaylistForDispatch(",
normalized,
StringComparison.Ordinal);
Assert.Contains(
"intent is LegacyRefreshNamedPlaylistsIntent or\n" +
" LegacySelectNamedPlaylistIntent or",
normalized,
StringComparison.Ordinal);
Assert.DoesNotContain(
"LegacyRefreshNamedPlaylistsIntent or\n" +
" LegacySelectNamedPlaylistIntent or",
normalized,
StringComparison.Ordinal);
Assert.Contains(
"\"select-named-playlist\",\n" +
" requestId,\n" +
" succeeded",
normalized,
StringComparison.Ordinal);
}
private static string FindRepositoryRoot()
{
var current = new DirectoryInfo(AppContext.BaseDirectory);
while (current is not null)
{
if (File.Exists(Path.Combine(current.FullName, "MBN_STOCK_WEBVIEW.sln")))
{
return current.FullName;
}
current = current.Parent;
}
throw new DirectoryNotFoundException("Repository root was not found.");
}
}