143 lines
5.3 KiB
C#
143 lines
5.3 KiB
C#
namespace MBN_STOCK_WEBVIEW.LegacyWeb.Tests;
|
|
|
|
public sealed class LegacyNativeDialogParityWebTests
|
|
{
|
|
private static readonly string RepositoryRoot = FindRepositoryRoot();
|
|
private static readonly string App = File.ReadAllText(Path.Combine(
|
|
RepositoryRoot,
|
|
"src",
|
|
"MBN_STOCK_WEBVIEW.LegacyParityApp",
|
|
"Web",
|
|
"app.js"));
|
|
private static readonly string Controller = File.ReadAllText(Path.Combine(
|
|
RepositoryRoot,
|
|
"src",
|
|
"MBN_STOCK_WEBVIEW.LegacyApplication",
|
|
"LegacyOperatorController.cs"));
|
|
private static readonly string PackageInputHarness = File.ReadAllText(Path.Combine(
|
|
RepositoryRoot,
|
|
"scripts",
|
|
"Test-LegacyPackageInput.mjs"));
|
|
|
|
[Fact]
|
|
public void Original_destructive_questions_are_authoritative_MmoneyCoder_dialogs()
|
|
{
|
|
foreach (var intent in new[]
|
|
{
|
|
"delete-all-playlist-rows",
|
|
"delete-manual-financial",
|
|
"delete-all-manual-financial",
|
|
"delete-all-manual-vi-items"
|
|
})
|
|
{
|
|
Assert.Contains($"send(\"{intent}\", {{}})", App, StringComparison.Ordinal);
|
|
}
|
|
|
|
Assert.DoesNotContain(
|
|
"window.confirm(\"송출 리스트를 모두 삭제하겠습니까?\")",
|
|
App,
|
|
StringComparison.Ordinal);
|
|
Assert.DoesNotContain(
|
|
"window.confirm(\"선택한 수동 재무 데이터를 삭제하시겠습니까?\")",
|
|
App,
|
|
StringComparison.Ordinal);
|
|
Assert.DoesNotContain(
|
|
"window.confirm(\"현재 화면의 수동 재무 데이터를 모두 삭제하시겠습니까?\")",
|
|
App,
|
|
StringComparison.Ordinal);
|
|
Assert.DoesNotContain(
|
|
"window.confirm(\"VI 목록을 모두 지우시겠습니까?\")",
|
|
App,
|
|
StringComparison.Ordinal);
|
|
Assert.DoesNotContain(
|
|
"clear.disabled = manual.viItems.length === 0",
|
|
App,
|
|
StringComparison.Ordinal);
|
|
|
|
foreach (var message in new[]
|
|
{
|
|
"송출 리스트를 모두 삭제하겠습니까?",
|
|
"선택한 종목을 삭제하겠습니까?",
|
|
"모든 종목을 삭제하겠습니까?",
|
|
"모두 삭제하겠습니까?"
|
|
})
|
|
{
|
|
Assert.Contains(message, Controller, StringComparison.Ordinal);
|
|
}
|
|
|
|
Assert.Contains("IsConfirmation: true", Controller, StringComparison.Ordinal);
|
|
Assert.Contains("PendingNativeConfirmation.ForPlaylistDeleteAll", Controller,
|
|
StringComparison.Ordinal);
|
|
Assert.Contains("PendingNativeConfirmation.ForManualFinancialDelete", Controller,
|
|
StringComparison.Ordinal);
|
|
Assert.Contains("PendingNativeConfirmation.ForManualViDeleteAll", Controller,
|
|
StringComparison.Ordinal);
|
|
}
|
|
|
|
[Fact]
|
|
public void PList_confirm_save_requests_state_driven_saved_dialog_without_browser_alert()
|
|
{
|
|
Assert.DoesNotContain(
|
|
"window.alert(\"저장되었습니다\")",
|
|
App,
|
|
StringComparison.Ordinal);
|
|
Assert.Contains(
|
|
"if (command === \"save-current-named-playlist-to\")",
|
|
App,
|
|
StringComparison.Ordinal);
|
|
Assert.Contains("payload.showSavedAlert = showSavedAlert === true", App,
|
|
StringComparison.Ordinal);
|
|
Assert.Contains("if (succeeded && showSavedAlert)", Controller,
|
|
StringComparison.Ordinal);
|
|
Assert.Contains("new LegacyDialogState(\"저장되었습니다\")", Controller,
|
|
StringComparison.Ordinal);
|
|
}
|
|
|
|
[Fact]
|
|
public void Package_input_smoke_answers_the_native_dialogs_it_now_exercises()
|
|
{
|
|
foreach (var label in new[]
|
|
{
|
|
"PList confirm row save",
|
|
"PROGRAM confirm named-playlist row save",
|
|
"GraphE ${screen} save",
|
|
"GraphE ${screen} delete",
|
|
"GraphE ${screen} delete-all cancel branch",
|
|
"VIList delete-all cancel branch",
|
|
"screen validation playlist cleanup"
|
|
})
|
|
{
|
|
Assert.Contains(label, PackageInputHarness, StringComparison.Ordinal);
|
|
}
|
|
|
|
Assert.Equal(
|
|
8,
|
|
PackageInputHarness.Split(
|
|
"pointerClickWithNativeDialog(",
|
|
StringSplitOptions.None).Length - 1);
|
|
// The only remaining browser confirm is the separate one-time import
|
|
// prompt, which has not been migrated to LegacyDialogState.
|
|
Assert.Equal(
|
|
2,
|
|
PackageInputHarness.Split(
|
|
"pointerClickWithJavaScriptDialog(",
|
|
StringSplitOptions.None).Length - 1);
|
|
}
|
|
|
|
private static string FindRepositoryRoot()
|
|
{
|
|
var directory = new DirectoryInfo(AppContext.BaseDirectory);
|
|
while (directory is not null)
|
|
{
|
|
if (File.Exists(Path.Combine(directory.FullName, "MBN_STOCK_WEBVIEW.sln")))
|
|
{
|
|
return directory.FullName;
|
|
}
|
|
|
|
directory = directory.Parent;
|
|
}
|
|
|
|
throw new DirectoryNotFoundException("Repository root was not found.");
|
|
}
|
|
}
|