summaryrefslogtreecommitdiff
path: root/tests/gameTargets.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'tests/gameTargets.test.ts')
-rw-r--r--tests/gameTargets.test.ts50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/gameTargets.test.ts b/tests/gameTargets.test.ts
new file mode 100644
index 0000000..2eb8b7e
--- /dev/null
+++ b/tests/gameTargets.test.ts
@@ -0,0 +1,50 @@
+import assert from "node:assert/strict";
+import test from "node:test";
+import { getTargetSource, mergeGameTargets, targetsForSource } from "../src/utils/gameTargets.ts";
+
+const config = (appid: string, profile: string) => ({ appid, profile, config: {} });
+
+test("workaround sidecar source wins over current discovery metadata", () => {
+ const installed = [{ appid: "123", name: "Shortcut", nonSteam: false }];
+ const workarounds = [{ appid: "123", non_steam: true, command_token_added: true }];
+
+ assert.equal(getTargetSource("123", installed, workarounds), "nonSteam");
+ assert.equal(mergeGameTargets([config("123", "Shortcut")], installed, workarounds)[0].source, "nonSteam");
+});
+
+test("configured profiles without reliable source are unknown", () => {
+ const targets = mergeGameTargets([config("456", "Missing Game")], [], []);
+
+ assert.deepEqual(targets[0], {
+ appid: "456",
+ name: "Missing Game",
+ nonSteam: false,
+ source: "unknown",
+ configured: true,
+ });
+});
+
+test("unknown configured profiles are visible in both source tabs", () => {
+ const targets = mergeGameTargets([
+ config("123", "Steam Game"),
+ config("456", "Missing Game"),
+ ], [
+ { appid: "123", name: "Steam Game", nonSteam: false },
+ { appid: "789", name: "Shortcut", nonSteam: true },
+ ], []);
+
+ const steamTargets = targetsForSource(targets, "steam");
+ const nonSteamTargets = targetsForSource(targets, "nonSteam");
+
+ assert.deepEqual(steamTargets.map((target) => target.appid).sort(), ["123", "456"]);
+ assert.deepEqual(nonSteamTargets.map((target) => target.appid).sort(), ["456", "789"]);
+});
+
+test("direct Flatpak shortcuts remain non-Steam targets", () => {
+ const targets = mergeGameTargets([], [
+ { appid: "123", name: "Flatpak shortcut", nonSteam: true, isFlatpakShortcut: true },
+ ], []);
+
+ assert.equal(targets[0].source, "nonSteam");
+ assert.equal(targets[0].isFlatpakShortcut, true);
+});