Files
MBN_STOCK_WEBVIEW/tests/LegacyParityWeb/main-alt-f4-parity.test.cjs

74 lines
2.1 KiB
JavaScript

"use strict";
const assert = require("node:assert/strict");
const fs = require("node:fs");
const path = require("node:path");
const test = require("node:test");
const root = path.resolve(__dirname, "..", "..");
const app = fs.readFileSync(path.join(
root,
"src",
"MBN_STOCK_WEBVIEW.LegacyParityApp",
"Web",
"app.js"), "utf8");
function loadKeydownHandler() {
const marker = 'document.addEventListener("keydown", function (event) {';
const start = app.lastIndexOf(marker);
const bodyStart = start + marker.length;
const end = app.indexOf("\n });", bodyStart);
assert.ok(start >= 0 && end > bodyStart);
return new Function(
"event",
"modalFocusManager",
"closeActiveChildModalFromAltF4",
app.slice(bodyStart, end));
}
function altF4Event(repeat = false) {
return {
key: "F4",
altKey: true,
repeat,
defaultPrevented: false,
propagationStopped: false,
preventDefault() { this.defaultPrevented = true; },
stopPropagation() { this.propagationStopped = true; }
};
}
test("main workspace Alt+F4 is consumed as the original no-op", () => {
const handleKeydown = loadKeydownHandler();
const event = altF4Event();
const closed = [];
handleKeydown(
event,
{ getActiveModal() { return null; } },
modal => closed.push(modal));
assert.equal(event.defaultPrevented, true);
assert.equal(event.propagationStopped, true);
assert.deepEqual(closed, []);
});
test("child modal Alt+F4 keeps its explicit close behavior and ignores repeats", () => {
const handleKeydown = loadKeydownHandler();
const modal = {};
const closed = [];
const manager = { getActiveModal() { return modal; } };
const initial = altF4Event();
handleKeydown(initial, manager, active => closed.push(active));
assert.equal(initial.defaultPrevented, true);
assert.equal(initial.propagationStopped, true);
assert.deepEqual(closed, [modal]);
const repeated = altF4Event(true);
handleKeydown(repeated, manager, active => closed.push(active));
assert.equal(repeated.defaultPrevented, true);
assert.equal(repeated.propagationStopped, true);
assert.deepEqual(closed, [modal]);
});