Files
SubMiner/src/core/services/runtime-config-service.test.ts

99 lines
2.6 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import {
getInitialInvisibleOverlayVisibilityService,
isAutoUpdateEnabledRuntimeService,
shouldAutoInitializeOverlayRuntimeFromConfigService,
shouldBindVisibleOverlayToMpvSubVisibilityService,
} from "./runtime-config-service";
const BASE_CONFIG = {
auto_start_overlay: false,
bind_visible_overlay_to_mpv_sub_visibility: true,
invisibleOverlay: {
startupVisibility: "platform-default" as const,
},
ankiConnect: {
behavior: {
autoUpdateNewCards: true,
},
},
};
test("getInitialInvisibleOverlayVisibilityService handles visibility + platform", () => {
assert.equal(
getInitialInvisibleOverlayVisibilityService(
{ ...BASE_CONFIG, invisibleOverlay: { startupVisibility: "visible" } },
"linux",
),
true,
);
assert.equal(
getInitialInvisibleOverlayVisibilityService(
{ ...BASE_CONFIG, invisibleOverlay: { startupVisibility: "hidden" } },
"darwin",
),
false,
);
assert.equal(
getInitialInvisibleOverlayVisibilityService(BASE_CONFIG, "linux"),
false,
);
assert.equal(
getInitialInvisibleOverlayVisibilityService(BASE_CONFIG, "darwin"),
true,
);
});
test("shouldAutoInitializeOverlayRuntimeFromConfigService respects auto start and visible startup", () => {
assert.equal(
shouldAutoInitializeOverlayRuntimeFromConfigService(BASE_CONFIG),
false,
);
assert.equal(
shouldAutoInitializeOverlayRuntimeFromConfigService({
...BASE_CONFIG,
auto_start_overlay: true,
}),
true,
);
assert.equal(
shouldAutoInitializeOverlayRuntimeFromConfigService({
...BASE_CONFIG,
invisibleOverlay: { startupVisibility: "visible" },
}),
true,
);
});
test("shouldBindVisibleOverlayToMpvSubVisibilityService returns config value", () => {
assert.equal(shouldBindVisibleOverlayToMpvSubVisibilityService(BASE_CONFIG), true);
assert.equal(
shouldBindVisibleOverlayToMpvSubVisibilityService({
...BASE_CONFIG,
bind_visible_overlay_to_mpv_sub_visibility: false,
}),
false,
);
});
test("isAutoUpdateEnabledRuntimeService prefers runtime option and falls back to config", () => {
assert.equal(
isAutoUpdateEnabledRuntimeService(BASE_CONFIG, {
getOptionValue: () => false,
}),
false,
);
assert.equal(
isAutoUpdateEnabledRuntimeService(
{
...BASE_CONFIG,
ankiConnect: { behavior: { autoUpdateNewCards: false } },
},
null,
),
false,
);
assert.equal(isAutoUpdateEnabledRuntimeService(BASE_CONFIG, null), true);
});