mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 06:22:45 -08:00
64 lines
2.1 KiB
TypeScript
64 lines
2.1 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import {
|
|
OverlayVisibilityFacadeDeps,
|
|
setVisibleOverlayVisibleRuntimeFacadeService,
|
|
toggleInvisibleOverlayRuntimeFacadeService,
|
|
toggleVisibleOverlayRuntimeFacadeService,
|
|
} from "./overlay-visibility-facade-service";
|
|
|
|
function makeDeps(initialVisible = false, initialInvisible = false): {
|
|
deps: OverlayVisibilityFacadeDeps;
|
|
getState: () => { visible: boolean; invisible: boolean; mpvSubVisible: boolean | null };
|
|
} {
|
|
let visible = initialVisible;
|
|
let invisible = initialInvisible;
|
|
let mpvSubVisible: boolean | null = null;
|
|
|
|
const deps: OverlayVisibilityFacadeDeps = {
|
|
getVisibleOverlayVisible: () => visible,
|
|
getInvisibleOverlayVisible: () => invisible,
|
|
setVisibleOverlayVisibleState: (value) => {
|
|
visible = value;
|
|
},
|
|
setInvisibleOverlayVisibleState: (value) => {
|
|
invisible = value;
|
|
},
|
|
updateVisibleOverlayVisibility: () => {},
|
|
updateInvisibleOverlayVisibility: () => {},
|
|
syncInvisibleOverlayMousePassthrough: () => {},
|
|
shouldBindVisibleOverlayToMpvSubVisibility: () => true,
|
|
isMpvConnected: () => true,
|
|
setMpvSubVisibility: (value) => {
|
|
mpvSubVisible = value;
|
|
},
|
|
};
|
|
|
|
return {
|
|
deps,
|
|
getState: () => ({ visible, invisible, mpvSubVisible }),
|
|
};
|
|
}
|
|
|
|
test("setVisibleOverlayVisibleRuntimeFacadeService updates visible state and mpv subtitle visibility", () => {
|
|
const { deps, getState } = makeDeps(false, true);
|
|
setVisibleOverlayVisibleRuntimeFacadeService(true, deps);
|
|
assert.deepEqual(getState(), {
|
|
visible: true,
|
|
invisible: true,
|
|
mpvSubVisible: false,
|
|
});
|
|
});
|
|
|
|
test("toggleVisibleOverlayRuntimeFacadeService flips visible overlay state", () => {
|
|
const { deps, getState } = makeDeps(false, false);
|
|
toggleVisibleOverlayRuntimeFacadeService(deps);
|
|
assert.equal(getState().visible, true);
|
|
});
|
|
|
|
test("toggleInvisibleOverlayRuntimeFacadeService flips invisible overlay state", () => {
|
|
const { deps, getState } = makeDeps(false, false);
|
|
toggleInvisibleOverlayRuntimeFacadeService(deps);
|
|
assert.equal(getState().invisible, true);
|
|
});
|