forked from laurentenhoor/devclaw
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgroup-isolation.test.ts
More file actions
117 lines (99 loc) · 4.32 KB
/
group-isolation.test.ts
File metadata and controls
117 lines (99 loc) · 4.32 KB
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
/**
* Tests for notify label helpers.
*
* Covers:
* - getNotifyLabel / NOTIFY_LABEL_PREFIX / NOTIFY_LABEL_COLOR
* - resolveNotifyChannel (new format + legacy backward compat)
*
* Run with: npx tsx --test lib/tools/worker/group-isolation.test.ts
*/
import { describe, it } from "node:test";
import assert from "node:assert";
import {
getNotifyLabel,
NOTIFY_LABEL_PREFIX,
NOTIFY_LABEL_COLOR,
resolveNotifyChannel,
} from "../../workflow/index.js";
// ---------------------------------------------------------------------------
// getNotifyLabel / constants
// ---------------------------------------------------------------------------
describe("notify label helpers", () => {
it("should build notify label from channel type and name", () => {
assert.strictEqual(getNotifyLabel("telegram", "primary"), "notify:telegram:primary");
assert.strictEqual(getNotifyLabel("whatsapp", "dev-chat"), "notify:whatsapp:dev-chat");
});
it("should build notify label with index fallback", () => {
assert.strictEqual(getNotifyLabel("telegram", "0"), "notify:telegram:0");
});
it("NOTIFY_LABEL_PREFIX should be 'notify:'", () => {
assert.strictEqual(NOTIFY_LABEL_PREFIX, "notify:");
});
it("NOTIFY_LABEL_COLOR should be light grey", () => {
assert.strictEqual(NOTIFY_LABEL_COLOR, "#e4e4e4");
});
it("getNotifyLabel output should start with NOTIFY_LABEL_PREFIX", () => {
const label = getNotifyLabel("telegram", "primary");
assert.ok(label.startsWith(NOTIFY_LABEL_PREFIX));
});
});
// ---------------------------------------------------------------------------
// resolveNotifyChannel — new format (notify:{channel}:{name})
// ---------------------------------------------------------------------------
describe("resolveNotifyChannel (new format)", () => {
const channels = [
{ channelId: "-111", channel: "telegram", name: "primary" },
{ channelId: "-222", channel: "whatsapp", name: "dev-chat" },
];
it("should resolve channel by channel type and name", () => {
const result = resolveNotifyChannel(["To Do", "notify:whatsapp:dev-chat"], channels);
assert.ok(result);
assert.strictEqual(result!.channelId, "-222");
assert.strictEqual(result!.channel, "whatsapp");
});
it("should resolve channel by channel type and index", () => {
const result = resolveNotifyChannel(["To Do", "notify:whatsapp:1"], channels);
assert.ok(result);
assert.strictEqual(result!.channelId, "-222");
assert.strictEqual(result!.channel, "whatsapp");
});
it("should fall back to first channel when new-format label matches nothing", () => {
const result = resolveNotifyChannel(["To Do", "notify:discord:unknown"], channels);
assert.ok(result);
assert.strictEqual(result!.channelId, "-111");
});
it("should fall back to first channel when no notify label present", () => {
const result = resolveNotifyChannel(["To Do", "bug"], channels);
assert.ok(result);
assert.strictEqual(result!.channelId, "-111");
});
it("should return undefined when channels is empty", () => {
const result = resolveNotifyChannel(["To Do", "notify:telegram:primary"], []);
assert.strictEqual(result, undefined);
});
});
// ---------------------------------------------------------------------------
// resolveNotifyChannel — legacy format (notify:{channelId})
// ---------------------------------------------------------------------------
describe("resolveNotifyChannel (legacy format)", () => {
const channels = [
{ channelId: "-111", channel: "telegram", name: "primary" },
{ channelId: "-222", channel: "whatsapp", name: "dev-chat" },
];
it("should resolve channel matching legacy notify label", () => {
const result = resolveNotifyChannel(["To Do", "notify:-222"], channels);
assert.ok(result);
assert.strictEqual(result!.channelId, "-222");
assert.strictEqual(result!.channel, "whatsapp");
});
it("should fall back to first channel when legacy label matches unknown channelId", () => {
const result = resolveNotifyChannel(["To Do", "notify:-999"], channels);
assert.ok(result);
assert.strictEqual(result!.channelId, "-111");
});
it("should return first channel when no notify label and multiple channels", () => {
const result = resolveNotifyChannel(["To Do"], channels);
assert.ok(result);
assert.strictEqual(result!.channelId, "-111");
});
});