OXYGENHUB
◆ main oxygenhub-vscode / test / diffusionview.test.mjs
1.9 KiB · last changed feat: a Diffusion view, what each repository takes from and diffuses to (closes #5) 22 days ago source blame history raw
1
import { test } from "node:test";
2
import assert from "node:assert/strict";
3
import { look, pinDescription, pinLabel, pinTooltip, tone } from "../out/diffusionview.mjs";
4
5
const half = (tone, word) => ({ tone, word, title: `${word}.` });
6
const pin = (over = {}) => ({
7
  upstream: "doomsdayone/rstar-api",
8
  consumer: "doomsdayone/metalgear",
9
  path: "rstar-api",
10
  bookmark: "develop",
11
  behind: 2,
12
  follow: "green",
13
  bump: 304,
14
  run: 194,
15
  run_status: "passed",
16
  upstream_state: half("amber", "untested"),
17
  consumer_state: half("green", "passes"),
18
  ...over,
19
});
20
21
test("a row shows the more urgent half", () => {
22
  assert.equal(tone(pin()), "amber", "untested outranks passes");
23
  assert.equal(tone(pin({ consumer_state: half("red", "fails") })), "red");
24
  assert.equal(tone(pin({ upstream_state: half("green", "checked"), consumer_state: half("off", "not following") })), "green", "not following is not urgent");
25
  assert.equal(tone(pin({ upstream_state: half("off", "x"), consumer_state: half("off", "y") })), "off");
26
  assert.equal(look("red").icon, "error");
27
  assert.equal(look("amber").color, "list.warningForeground");
28
  assert.equal(look("whatever").icon, "circle-outline");
29
});
30
31
test("a row names the other end and reads like the pill", () => {
32
  assert.equal(pinLabel(pin(), "takes"), "doomsdayone/rstar-api");
33
  assert.equal(pinLabel(pin(), "gives"), "doomsdayone/metalgear");
34
  assert.equal(pinDescription(pin()), "untested │ passes · 2 behind · bump #304");
35
  assert.equal(pinDescription(pin({ behind: 0, bump: null, consumer_state: half("green", "up to date") })), "untested │ up to date");
36
  assert.equal(pinDescription(pin({ behind: null, bump: null })), "untested │ passes");
37
  const tip = pinTooltip(pin());
38
  assert.match(tip, /\*\*doomsdayone\/rstar-api: untested\.\*\*/);
39
  assert.match(tip, /Pinned at `rstar-api` on `develop`; doomsdayone\/metalgear follows when the upstream is green\. Open bump #304 · run #194 passed\./);
40
});