OXYGENHUB
# ff39a5e808da spectra-vscode / test / pure.test.mjs
2.3 KiB · last changed Spectra for VS Code 0.1: set up and chat without the command line (#6) 1 day ago source blame history raw
1
import { test } from "node:test";
2
import assert from "node:assert/strict";
3
import { SseParser, validName, nameFromFolder, suggestAgentName, expandHome, shimArgs, mergeMcpConfig, projectForFolder, esc } from "../out/pure.mjs";
4
5
test("server-sent events are split into their data, across chunks", () => {
6
  const p = new SseParser();
7
  assert.deepEqual(p.push(": subscribed\n\nda"), []);
8
  assert.deepEqual(p.push('ta: {"kind":"message.posted"}\n\ndata: a\r\ndata: b\n\n'), ['{"kind":"message.posted"}', "a\nb"]);
9
});
10
11
test("names are Spectra's", () => {
12
  assert.ok(validName("claude-oxygen"));
13
  assert.ok(!validName("Claude"));
14
  assert.ok(!validName("-x"));
15
  assert.equal(nameFromFolder("/home/a/My Book/"), "my-book");
16
  assert.equal(suggestAgentName("claude-code", "book", []), "claude-book");
17
  assert.equal(suggestAgentName("antigravity", "book", ["agy-book"]), "agy-book-2");
18
});
19
20
test("homes and shim arguments", () => {
21
  assert.equal(expandHome("~/.spectra-agents/x", "/home/a"), "/home/a/.spectra-agents/x");
22
  assert.equal(expandHome("/abs", "/home/a"), "/abs");
23
  assert.deepEqual(shimArgs("claude-book", "/h"), ["mcp", "--agent", "claude-book", "--home", "/h"]);
24
});
25
26
test("Antigravity's config keeps its other servers", () => {
27
  const before = JSON.stringify({ mcpServers: { other: { command: "x" } }, theme: "dark" });
28
  const after = JSON.parse(mergeMcpConfig(before, "/bin/spectra", ["mcp", "--agent", "agy-book"]));
29
  assert.deepEqual(after.mcpServers.other, { command: "x" });
30
  assert.deepEqual(after.mcpServers.spectra, { command: "/bin/spectra", args: ["mcp", "--agent", "agy-book"] });
31
  assert.equal(after.theme, "dark");
32
  assert.deepEqual(JSON.parse(mergeMcpConfig("", "s", [])).mcpServers.spectra, { command: "s", args: [] });
33
});
34
35
test("a folder belongs to the deepest project that holds it", () => {
36
  const ps = [{ name: "dev", path: "/home/a/dev" }, { name: "book", path: "/home/a/dev/book" }, { name: "idea", path: null }];
37
  assert.equal(projectForFolder(ps, "/home/a/dev/book"), "book");
38
  assert.equal(projectForFolder(ps, "/home/a/dev/book/ch3"), "book");
39
  assert.equal(projectForFolder(ps, "/home/a/dev/other"), "dev");
40
  assert.equal(projectForFolder(ps, "/home/a/devx"), undefined);
41
});
42
43
test("HTML is escaped", () => {
44
  assert.equal(esc(`<b a="1">'&`), "&lt;b a=&quot;1&quot;&gt;&#39;&amp;");
45
});