@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 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 { callbackUpdate, createContext, messageUpdate, mockApi, runMiddleware } from "@yaebal/test";
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 { api, calls } = mockApi();
45
+ const env = createTestEnv(composer);
46
+ const user = env.createUser();
46
47
  installToml(composer, { commands: [{ name: "start", reply: "hi" }] });
47
- await runMiddleware(composer, createContext(messageUpdate({ text: "/start" }), api));
48
- assert.deepEqual(calls, [
49
- {
50
- method: "sendMessage",
51
- params: { chat_id: 1, text: "hi", reply_parameters: { message_id: 1 } },
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 { api, calls } = mockApi();
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 runMiddleware(composer, createContext(messageUpdate({ text: "hello" }), api));
65
- await runMiddleware(composer, createContext(messageUpdate({ text: "hello yaebal" }), api));
66
- assert.equal(calls.length, 1);
67
- assert.equal(calls[0]?.params?.text, "match");
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 { api, calls } = mockApi();
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 runMiddleware(composer, createContext(messageUpdate({ text: "secret!" }), api));
76
- await runMiddleware(composer, createContext(messageUpdate({ text: "secret" }), api));
77
- assert.equal(calls.length, 1);
78
- assert.equal(calls[0]?.params?.text, "match");
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 { api, calls } = mockApi();
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 runMiddleware(composer, createContext(callbackUpdate({ data: "profile" }), api));
93
- assert.deepEqual(calls, [
94
- {
95
- method: "sendMessage",
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
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,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9E,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IAClC,MAAM,MAAM,GAAG,eAAe,CAAC;;;;CAI/B,CAAC,CAAC;IAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IACvC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAEnC,IAAI,CAAC;QACJ,MAAM,SAAS,CAAC,IAAI,EAAE,4CAA4C,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAErC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;YAAS,CAAC;QACV,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;AACF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC1C,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACxC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;QACpF,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KAC1C,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;IACvE,MAAM,CAAC,MAAM,CACZ,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC3D,mDAAmD,CACnD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACzD,MAAM,CAAC,MAAM,CACZ,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACzD,+BAA+B,CAC/B,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;IAClD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;IAE9B,WAAW,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE;QAC3C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;QACvB,IAAI,EAAE,IAAI;QACV,gBAAgB,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;KACjD,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACpD,MAAM,CAAC,MAAM,CACZ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EACpF,oDAAoD,CACpD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;IACjD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;IAE9B,WAAW,CAAC,QAAQ,EAAE;QACrB,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;KACtE,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAEvC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;IAC/C,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;IAE9B,WAAW,CAAC,QAAQ,EAAE;QACrB,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;KACpE,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEjC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;IAC/C,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;IAE9B,WAAW,CACV,QAAQ,EACR;QACC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC5D,EACD;QACC,QAAQ,EAAE;YACT,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC9B,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;SACD;KACD,CACD,CAAC;IAEF,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE5B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IACvD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AAC3F,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaebal/toml",
3
- "version": "0.0.1",
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.5"
21
+ "@yaebal/core": "0.0.8"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "latest",
25
- "@yaebal/test": "0.0.1"
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 { callbackUpdate, createContext, messageUpdate, mockApi, runMiddleware } from "@yaebal/test";
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 { api, calls } = mockApi();
61
+ const env = createTestEnv(composer);
62
+ const user = env.createUser();
62
63
 
63
64
  installToml(composer, { commands: [{ name: "start", reply: "hi" }] });
64
- await runMiddleware(composer, createContext(messageUpdate({ text: "/start" }), api));
65
+ const sent = await user.sendCommand("start");
65
66
 
66
- assert.deepEqual(calls, [
67
- {
68
- method: "sendMessage",
69
- params: { chat_id: 1, text: "hi", reply_parameters: { message_id: 1 } },
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 { api, calls } = mockApi();
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 runMiddleware(composer, createContext(messageUpdate({ text: "hello" }), api));
90
- await runMiddleware(composer, createContext(messageUpdate({ text: "hello yaebal" }), api));
91
+ await user.sendMessage("hello");
92
+ await user.sendMessage("hello yaebal");
91
93
 
92
- assert.equal(calls.length, 1);
93
- assert.equal(calls[0]?.params?.text, "match");
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 { api, calls } = mockApi();
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 runMiddleware(composer, createContext(messageUpdate({ text: "secret!" }), api));
105
- await runMiddleware(composer, createContext(messageUpdate({ text: "secret" }), api));
107
+ await user.sendMessage("secret!");
108
+ await user.sendMessage("secret");
106
109
 
107
- assert.equal(calls.length, 1);
108
- assert.equal(calls[0]?.params?.text, "match");
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 { api, calls } = mockApi();
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 runMiddleware(composer, createContext(callbackUpdate({ data: "profile" }), api));
133
+ await user.click("profile");
130
134
 
131
- assert.deepEqual(calls, [
132
- {
133
- method: "sendMessage",
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
  });