@yaebal/toml 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.test.js +28 -27
- package/lib/index.test.js.map +1 -1
- package/package.json +3 -3
- package/src/index.test.ts +28 -27
package/lib/index.test.js
CHANGED
|
@@ -4,7 +4,7 @@ import { tmpdir } from "node:os";
|
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import test from "node:test";
|
|
6
6
|
import { Composer } from "@yaebal/core";
|
|
7
|
-
import {
|
|
7
|
+
import { createTestEnv } from "@yaebal/test";
|
|
8
8
|
import { installToml, parseTomlConfig, validateTomlConfig } from "./index.js";
|
|
9
9
|
test("parse raw toml string", () => {
|
|
10
10
|
const config = parseTomlConfig(`
|
|
@@ -42,44 +42,48 @@ test("validate message with missing on should fail", () => {
|
|
|
42
42
|
});
|
|
43
43
|
test("install registers command reply", async () => {
|
|
44
44
|
const composer = new Composer();
|
|
45
|
-
const
|
|
45
|
+
const env = createTestEnv(composer);
|
|
46
|
+
const user = env.createUser();
|
|
46
47
|
installToml(composer, { commands: [{ name: "start", reply: "hi" }] });
|
|
47
|
-
|
|
48
|
-
assert.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
},
|
|
53
|
-
|
|
48
|
+
const sent = await user.sendCommand("start");
|
|
49
|
+
assert.equal(env.apiCalls.length, 1);
|
|
50
|
+
assert.deepEqual(env.lastApiCall()?.params, {
|
|
51
|
+
chat_id: user.pmChat.id,
|
|
52
|
+
text: "hi",
|
|
53
|
+
reply_parameters: { message_id: sent.message_id },
|
|
54
|
+
});
|
|
54
55
|
});
|
|
55
56
|
test("install throws on missing named handler", () => {
|
|
56
57
|
assert.throws(() => installToml(new Composer(), { commands: [{ name: "ping", handler: "ping" }] }), /Missing handler "ping" referenced in commands\[0\]/);
|
|
57
58
|
});
|
|
58
59
|
test("messages contains filter works", async () => {
|
|
59
60
|
const composer = new Composer();
|
|
60
|
-
const
|
|
61
|
+
const env = createTestEnv(composer);
|
|
62
|
+
const user = env.createUser();
|
|
61
63
|
installToml(composer, {
|
|
62
64
|
messages: [{ on: "message:text", contains: "yaebal", reply: "match" }],
|
|
63
65
|
});
|
|
64
|
-
await
|
|
65
|
-
await
|
|
66
|
-
assert.equal(
|
|
67
|
-
assert.equal(
|
|
66
|
+
await user.sendMessage("hello");
|
|
67
|
+
await user.sendMessage("hello yaebal");
|
|
68
|
+
assert.equal(env.callsTo("sendMessage").length, 1);
|
|
69
|
+
assert.equal(env.lastApiCall("sendMessage")?.params?.text, "match");
|
|
68
70
|
});
|
|
69
71
|
test("messages equals filter works", async () => {
|
|
70
72
|
const composer = new Composer();
|
|
71
|
-
const
|
|
73
|
+
const env = createTestEnv(composer);
|
|
74
|
+
const user = env.createUser();
|
|
72
75
|
installToml(composer, {
|
|
73
76
|
messages: [{ on: "message:text", equals: "secret", reply: "match" }],
|
|
74
77
|
});
|
|
75
|
-
await
|
|
76
|
-
await
|
|
77
|
-
assert.equal(
|
|
78
|
-
assert.equal(
|
|
78
|
+
await user.sendMessage("secret!");
|
|
79
|
+
await user.sendMessage("secret");
|
|
80
|
+
assert.equal(env.callsTo("sendMessage").length, 1);
|
|
81
|
+
assert.equal(env.lastApiCall("sendMessage")?.params?.text, "match");
|
|
79
82
|
});
|
|
80
83
|
test("callbacks with handler works", async () => {
|
|
81
84
|
const composer = new Composer();
|
|
82
|
-
const
|
|
85
|
+
const env = createTestEnv(composer);
|
|
86
|
+
const user = env.createUser();
|
|
83
87
|
installToml(composer, {
|
|
84
88
|
callbacks: [{ data: "profile", handler: "profileCallback" }],
|
|
85
89
|
}, {
|
|
@@ -89,12 +93,9 @@ test("callbacks with handler works", async () => {
|
|
|
89
93
|
},
|
|
90
94
|
},
|
|
91
95
|
});
|
|
92
|
-
await
|
|
93
|
-
assert.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
params: { chat_id: 1, text: "profile" },
|
|
97
|
-
},
|
|
98
|
-
]);
|
|
96
|
+
await user.click("profile");
|
|
97
|
+
assert.equal(env.apiCalls.length, 1);
|
|
98
|
+
assert.equal(env.lastApiCall()?.method, "sendMessage");
|
|
99
|
+
assert.deepEqual(env.lastApiCall()?.params, { chat_id: user.pmChat.id, text: "profile" });
|
|
99
100
|
});
|
|
100
101
|
//# sourceMappingURL=index.test.js.map
|
package/lib/index.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yaebal/toml",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "yaebal toml — declarative toml routes for yaebal bots.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"smol-toml": "^1.7.0",
|
|
20
20
|
"zod": "^4.4.3",
|
|
21
|
-
"@yaebal/core": "0.0.
|
|
21
|
+
"@yaebal/core": "0.0.8"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@types/node": "latest",
|
|
25
|
-
"@yaebal/test": "0.0
|
|
25
|
+
"@yaebal/test": "0.2.0"
|
|
26
26
|
},
|
|
27
27
|
"engines": {
|
|
28
28
|
"node": ">=20"
|
package/src/index.test.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { tmpdir } from "node:os";
|
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import test from "node:test";
|
|
6
6
|
import { Composer } from "@yaebal/core";
|
|
7
|
-
import {
|
|
7
|
+
import { createTestEnv } from "@yaebal/test";
|
|
8
8
|
import { installToml, parseTomlConfig, validateTomlConfig } from "./index.js";
|
|
9
9
|
|
|
10
10
|
test("parse raw toml string", () => {
|
|
@@ -58,17 +58,18 @@ test("validate message with missing on should fail", () => {
|
|
|
58
58
|
|
|
59
59
|
test("install registers command reply", async () => {
|
|
60
60
|
const composer = new Composer();
|
|
61
|
-
const
|
|
61
|
+
const env = createTestEnv(composer);
|
|
62
|
+
const user = env.createUser();
|
|
62
63
|
|
|
63
64
|
installToml(composer, { commands: [{ name: "start", reply: "hi" }] });
|
|
64
|
-
|
|
65
|
+
const sent = await user.sendCommand("start");
|
|
65
66
|
|
|
66
|
-
assert.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
},
|
|
71
|
-
|
|
67
|
+
assert.equal(env.apiCalls.length, 1);
|
|
68
|
+
assert.deepEqual(env.lastApiCall()?.params, {
|
|
69
|
+
chat_id: user.pmChat.id,
|
|
70
|
+
text: "hi",
|
|
71
|
+
reply_parameters: { message_id: sent.message_id },
|
|
72
|
+
});
|
|
72
73
|
});
|
|
73
74
|
|
|
74
75
|
test("install throws on missing named handler", () => {
|
|
@@ -80,37 +81,40 @@ test("install throws on missing named handler", () => {
|
|
|
80
81
|
|
|
81
82
|
test("messages contains filter works", async () => {
|
|
82
83
|
const composer = new Composer();
|
|
83
|
-
const
|
|
84
|
+
const env = createTestEnv(composer);
|
|
85
|
+
const user = env.createUser();
|
|
84
86
|
|
|
85
87
|
installToml(composer, {
|
|
86
88
|
messages: [{ on: "message:text", contains: "yaebal", reply: "match" }],
|
|
87
89
|
});
|
|
88
90
|
|
|
89
|
-
await
|
|
90
|
-
await
|
|
91
|
+
await user.sendMessage("hello");
|
|
92
|
+
await user.sendMessage("hello yaebal");
|
|
91
93
|
|
|
92
|
-
assert.equal(
|
|
93
|
-
assert.equal(
|
|
94
|
+
assert.equal(env.callsTo("sendMessage").length, 1);
|
|
95
|
+
assert.equal(env.lastApiCall("sendMessage")?.params?.text, "match");
|
|
94
96
|
});
|
|
95
97
|
|
|
96
98
|
test("messages equals filter works", async () => {
|
|
97
99
|
const composer = new Composer();
|
|
98
|
-
const
|
|
100
|
+
const env = createTestEnv(composer);
|
|
101
|
+
const user = env.createUser();
|
|
99
102
|
|
|
100
103
|
installToml(composer, {
|
|
101
104
|
messages: [{ on: "message:text", equals: "secret", reply: "match" }],
|
|
102
105
|
});
|
|
103
106
|
|
|
104
|
-
await
|
|
105
|
-
await
|
|
107
|
+
await user.sendMessage("secret!");
|
|
108
|
+
await user.sendMessage("secret");
|
|
106
109
|
|
|
107
|
-
assert.equal(
|
|
108
|
-
assert.equal(
|
|
110
|
+
assert.equal(env.callsTo("sendMessage").length, 1);
|
|
111
|
+
assert.equal(env.lastApiCall("sendMessage")?.params?.text, "match");
|
|
109
112
|
});
|
|
110
113
|
|
|
111
114
|
test("callbacks with handler works", async () => {
|
|
112
115
|
const composer = new Composer();
|
|
113
|
-
const
|
|
116
|
+
const env = createTestEnv(composer);
|
|
117
|
+
const user = env.createUser();
|
|
114
118
|
|
|
115
119
|
installToml(
|
|
116
120
|
composer,
|
|
@@ -126,12 +130,9 @@ test("callbacks with handler works", async () => {
|
|
|
126
130
|
},
|
|
127
131
|
);
|
|
128
132
|
|
|
129
|
-
await
|
|
133
|
+
await user.click("profile");
|
|
130
134
|
|
|
131
|
-
assert.
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
params: { chat_id: 1, text: "profile" },
|
|
135
|
-
},
|
|
136
|
-
]);
|
|
135
|
+
assert.equal(env.apiCalls.length, 1);
|
|
136
|
+
assert.equal(env.lastApiCall()?.method, "sendMessage");
|
|
137
|
+
assert.deepEqual(env.lastApiCall()?.params, { chat_id: user.pmChat.id, text: "profile" });
|
|
137
138
|
});
|