Files
flint/tests/presenceTypes.test.ts
T

55 lines
1.6 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import {
DEFAULT_ACTIVITY_TEXT,
MAX_ACTIVITY_ROTATION_INTERVAL_SECONDS,
MIN_ACTIVITY_ROTATION_INTERVAL_SECONDS,
parsePresenceState,
sanitizeActivityTexts,
sanitizePresenceRotationIntervalSeconds,
} from "../src/validators/presence.js";
test("sanitizeActivityTexts fallback sur le texte par defaut", () => {
const texts = sanitizeActivityTexts([" ", ""]);
assert.deepEqual(texts, [DEFAULT_ACTIVITY_TEXT]);
});
test("sanitizePresenceRotationIntervalSeconds borne les valeurs", () => {
assert.equal(sanitizePresenceRotationIntervalSeconds(1), MIN_ACTIVITY_ROTATION_INTERVAL_SECONDS);
assert.equal(
sanitizePresenceRotationIntervalSeconds(MAX_ACTIVITY_ROTATION_INTERVAL_SECONDS + 100),
MAX_ACTIVITY_ROTATION_INTERVAL_SECONDS,
);
});
test("parsePresenceState reconstruit un etat valide", () => {
const parsed = parsePresenceState({
status: "online",
activity: {
type: "PLAYING",
texts: ["Hello", "World"],
rotationIntervalSeconds: 20,
},
});
assert.ok(parsed);
assert.equal(parsed?.status, "online");
assert.equal(parsed?.activity.type, "PLAYING");
assert.deepEqual(parsed?.activity.texts, ["Hello", "World"]);
assert.equal(parsed?.activity.rotationIntervalSeconds, 20);
});
test("parsePresenceState retourne null sur statut invalide", () => {
const parsed = parsePresenceState({
status: "invalid",
activity: {
type: "PLAYING",
texts: ["Hello"],
rotationIntervalSeconds: 20,
},
});
assert.equal(parsed, null);
});