mirror of
https://github.com/ReCloudStudio/WebHooker.git
synced 2026-09-22 16:11:29 +00:00
chore(quality): provider fixtures, formatter snapshots, platform contract tests, CI, CodeQL, dependabot
This commit is contained in:
parent
04fa52db52
commit
320e825bf8
15 changed files with 405 additions and 3 deletions
44
tests/platform-contract.test.ts
Normal file
44
tests/platform-contract.test.ts
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import { describe, test, expect } from "bun:test";
|
||||
import { renderNeutralMessage as renderDiscord } from "../server/lib/drivers/discord/render";
|
||||
import { renderNeutralMessage as renderTelegram } from "../server/lib/drivers/telegram/render";
|
||||
import {
|
||||
MAX_TITLE,
|
||||
MAX_DESCRIPTION,
|
||||
MAX_FIELDS,
|
||||
MAX_FIELD_VALUE,
|
||||
MAX_FOOTER,
|
||||
} from "../server/lib/formatters/helpers";
|
||||
import type { NeutralMessage } from "../server/lib/types";
|
||||
|
||||
const big = "x".repeat(10000);
|
||||
|
||||
function oversized(): NeutralMessage {
|
||||
return {
|
||||
title: `acme/widget#1: ${big}`,
|
||||
url: "https://github.com/acme/widget",
|
||||
description: big,
|
||||
fields: Array.from({ length: 30 }, (_, i) => ({ name: `field-${i}`, value: big })),
|
||||
footer: big,
|
||||
};
|
||||
}
|
||||
|
||||
describe("platform contract", () => {
|
||||
test("discord render clamps all limits", () => {
|
||||
const embed = renderDiscord(oversized()).embeds?.[0];
|
||||
expect(embed).toBeDefined();
|
||||
expect(embed!.title!.length).toBeLessThanOrEqual(MAX_TITLE);
|
||||
expect(embed!.description!.length).toBeLessThanOrEqual(MAX_DESCRIPTION);
|
||||
expect(embed!.fields!.length).toBeLessThanOrEqual(MAX_FIELDS);
|
||||
for (const f of embed!.fields!) {
|
||||
expect(f.value.length).toBeLessThanOrEqual(MAX_FIELD_VALUE);
|
||||
}
|
||||
expect(embed!.footer).toBeDefined();
|
||||
expect(embed!.footer!.text.length).toBeLessThanOrEqual(MAX_FOOTER);
|
||||
});
|
||||
|
||||
test("telegram render stays within the 4096-char cap", () => {
|
||||
const html = renderTelegram(oversized());
|
||||
expect(html.length).toBeGreaterThan(4000);
|
||||
expect(html.length).toBeLessThan(4200);
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue