mirror of
https://github.com/hansjone/dsh-im-ops.git
synced 2026-10-17 03:40:46 +08:00
test(telegram): lock plain delivery baseline
This commit is contained in:
parent
3ff8c2a519
commit
73f262711b
1 changed files with 75 additions and 0 deletions
|
|
@ -247,6 +247,81 @@ test('Telegram API registers the command menu and commands-type menu button', as
|
||||||
await assert.rejects(() => api.setChatMenuButton({ menuButton: 'commands' }), /menu button is invalid/);
|
await assert.rejects(() => api.setChatMenuButton({ menuButton: 'commands' }), /menu button is invalid/);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Telegram API preserves the legacy plain send and edit payloads', async () => {
|
||||||
|
const calls = [];
|
||||||
|
const api = new TelegramApi({
|
||||||
|
token: TOKEN,
|
||||||
|
fetchImpl: async (url, options) => {
|
||||||
|
calls.push({ method: url.pathname.split('/').at(-1), body: JSON.parse(options.body) });
|
||||||
|
return jsonResponse({ ok: true, result: { message_id: 501 } });
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await api.sendMessage({
|
||||||
|
chatId: -100123,
|
||||||
|
text: 'legacy send',
|
||||||
|
replyToMessageId: 44,
|
||||||
|
messageThreadId: 55,
|
||||||
|
});
|
||||||
|
await api.editMessageText({
|
||||||
|
chatId: -100123,
|
||||||
|
messageId: 501,
|
||||||
|
text: 'legacy edit',
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.deepEqual(calls, [{
|
||||||
|
method: 'sendMessage',
|
||||||
|
body: {
|
||||||
|
chat_id: -100123,
|
||||||
|
text: 'legacy send',
|
||||||
|
link_preview_options: { is_disabled: true },
|
||||||
|
reply_parameters: { message_id: 44, allow_sending_without_reply: true },
|
||||||
|
message_thread_id: 55,
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
method: 'editMessageText',
|
||||||
|
body: {
|
||||||
|
chat_id: -100123,
|
||||||
|
message_id: 501,
|
||||||
|
text: 'legacy edit',
|
||||||
|
link_preview_options: { is_disabled: true },
|
||||||
|
},
|
||||||
|
}]);
|
||||||
|
assert.equal(Object.hasOwn(calls[0].body, 'parse_mode'), false);
|
||||||
|
assert.equal(Object.hasOwn(calls[1].body, 'parse_mode'), false);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Telegram plain delivery keeps the 4000 boundary, reply, topic, and content', async () => {
|
||||||
|
const calls = [];
|
||||||
|
let nextMessageId = 600;
|
||||||
|
const client = new TelegramBotClient({
|
||||||
|
api: {
|
||||||
|
sendMessage: async (payload) => {
|
||||||
|
calls.push(payload);
|
||||||
|
return { message_id: nextMessageId++ };
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const target = { chatId: -100123, replyToMessageId: 44, messageThreadId: 55 };
|
||||||
|
|
||||||
|
const exact = `\`\`\`js\n${'a'.repeat(3990)}\n\`\`\``;
|
||||||
|
assert.equal(exact.length, 4000);
|
||||||
|
await client.sendText(target, exact);
|
||||||
|
assert.equal(calls.length, 1);
|
||||||
|
assert.equal(calls[0].text, exact);
|
||||||
|
|
||||||
|
calls.length = 0;
|
||||||
|
const long = `${'中'.repeat(3998)}😀Z`;
|
||||||
|
assert.equal(long.length, 4001);
|
||||||
|
const receipt = await client.sendText(target, long);
|
||||||
|
assert.equal(calls.length, 2);
|
||||||
|
assert.equal(calls.map((call) => call.text).join(''), long);
|
||||||
|
assert.equal(calls[0].replyToMessageId, 44);
|
||||||
|
assert.equal(calls[1].replyToMessageId, undefined);
|
||||||
|
assert.deepEqual(calls.map((call) => call.messageThreadId), [55, 55]);
|
||||||
|
assert.deepEqual(receipt.providerMessageIds, ['601', '602']);
|
||||||
|
});
|
||||||
|
|
||||||
test('Telegram API uploads a result file as a native document in the same topic and reply chain', async () => {
|
test('Telegram API uploads a result file as a native document in the same topic and reply chain', async () => {
|
||||||
let request;
|
let request;
|
||||||
const api = new TelegramApi({
|
const api = new TelegramApi({
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue