File size: 4,309 Bytes
cd8bd0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import test from "node:test";
import assert from "node:assert/strict";
import fs from "node:fs";
import os from "node:os";
import path from "node:path";

const TEST_DATA_DIR = fs.mkdtempSync(path.join(os.tmpdir(), "omniroute-compression-combos-"));
const ORIGINAL_DATA_DIR = process.env.DATA_DIR;
process.env.DATA_DIR = TEST_DATA_DIR;

const core = await import("../../../src/lib/db/core.ts");
const combosDb = await import("../../../src/lib/db/compressionCombos.ts");

async function resetStorage() {
  core.resetDbInstance();
  fs.rmSync(TEST_DATA_DIR, { recursive: true, force: true });
  fs.mkdirSync(TEST_DATA_DIR, { recursive: true });
}

test.beforeEach(async () => {
  await resetStorage();
});

test.after(() => {
  core.resetDbInstance();
  fs.rmSync(TEST_DATA_DIR, { recursive: true, force: true });
  if (ORIGINAL_DATA_DIR === undefined) {
    delete process.env.DATA_DIR;
  } else {
    process.env.DATA_DIR = ORIGINAL_DATA_DIR;
  }
});

test("creates default compression combo automatically", () => {
  const combos = combosDb.listCompressionCombos();
  const combo = combos.find((item) => item.id === "default-caveman");

  assert.equal(combo?.isDefault, true);
  assert.equal(combo?.description, "Default RTK + Caveman compression pipeline");
  assert.deepEqual(combo?.pipeline, [
    { engine: "rtk", intensity: "standard" },
    { engine: "caveman", intensity: "full" },
  ]);
});

test("upgrades the legacy seeded default compression combo pipeline", () => {
  const db = core.getDbInstance();
  db.prepare(
    `
    UPDATE compression_combos
    SET description = ?, pipeline = ?
    WHERE id = ?
  `
  ).run(
    "Default Caveman compression pipeline",
    JSON.stringify([{ engine: "caveman", intensity: "full" }]),
    "default-caveman"
  );

  const combo = combosDb.getDefaultCompressionCombo();
  assert.equal(combo?.id, "default-caveman");
  assert.equal(combo?.description, "Default RTK + Caveman compression pipeline");
  assert.deepEqual(combo?.pipeline, [
    { engine: "rtk", intensity: "standard" },
    { engine: "caveman", intensity: "full" },
  ]);
});

test("does not overwrite a customized default compression combo", () => {
  const db = core.getDbInstance();
  db.prepare(
    `
    UPDATE compression_combos
    SET name = ?, description = ?, pipeline = ?
    WHERE id = ?
  `
  ).run(
    "Custom Default",
    "User changed",
    JSON.stringify([{ engine: "caveman", intensity: "lite" }]),
    "default-caveman"
  );

  const combo = combosDb.getDefaultCompressionCombo();
  assert.equal(combo?.id, "default-caveman");
  assert.equal(combo?.name, "Custom Default");
  assert.equal(combo?.description, "User changed");
  assert.deepEqual(combo?.pipeline, [{ engine: "caveman", intensity: "lite" }]);
});

test("creates, updates and protects default compression combos", () => {
  const combo = combosDb.createCompressionCombo({
    name: "RTK first",
    pipeline: [{ engine: "rtk", intensity: "standard" }],
    languagePacks: ["en", "pt-BR"],
  });
  assert.equal(combo.name, "RTK first");
  assert.equal(combo.pipeline[0].engine, "rtk");

  const updated = combosDb.updateCompressionCombo(combo.id, {
    description: "Updated",
    isDefault: true,
  });
  assert.equal(updated?.description, "Updated");
  assert.equal(combosDb.getDefaultCompressionCombo()?.id, combo.id);

  assert.equal(combosDb.deleteCompressionCombo("default-caveman"), true);
  assert.equal(combosDb.deleteCompressionCombo(combo.id), false);
});

test("assigns routing combos to compression combos", () => {
  const combo = combosDb.createCompressionCombo({
    name: "Stacked",
    pipeline: [
      { engine: "rtk", intensity: "standard" },
      { engine: "caveman", intensity: "full" },
    ],
  });

  assert.equal(combosDb.assignRoutingCombo(combo.id, "routing-a"), true);
  assert.equal(combosDb.getCompressionComboForRoutingCombo("routing-a")?.id, combo.id);
  assert.deepEqual(
    combosDb
      .getAssignmentsForCompressionCombo(combo.id)
      .map((assignment) => assignment.routingComboId),
    ["routing-a"]
  );

  assert.equal(combosDb.updateAssignments(combo.id, ["routing-b", "routing-c"]), true);
  assert.equal(combosDb.getCompressionComboForRoutingCombo("routing-a"), null);
  assert.equal(combosDb.getCompressionComboForRoutingCombo("routing-b")?.id, combo.id);
});