upgrade project and add deploy workflow
Some checks failed
Deploy Abondance Bot / deploy (push) Failing after 24s
Some checks failed
Deploy Abondance Bot / deploy (push) Failing after 24s
This commit is contained in:
parent
0dabb7c3c0
commit
3a50bd061a
10 changed files with 358 additions and 108 deletions
65
test/membersChecker.test.js
Normal file
65
test/membersChecker.test.js
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
import assert from "node:assert/strict";
|
||||
import test from "node:test";
|
||||
import {
|
||||
assertPlausibleChange,
|
||||
formatChanges,
|
||||
getChanges,
|
||||
getGuildMembers,
|
||||
parseGuildMembers,
|
||||
} from "../src/features/membersChecker.js";
|
||||
|
||||
const guildPage = (members) => `
|
||||
<div class="box_list_area">
|
||||
<ul class="adventure_list_table">
|
||||
<li>
|
||||
${members
|
||||
.map(
|
||||
(member) =>
|
||||
`<span class="guild_name"><span class="text"><a>${member}</a></span></span>`,
|
||||
)
|
||||
.join("")}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
`;
|
||||
|
||||
test("parseGuildMembers extrait et nettoie les noms", () => {
|
||||
assert.deepEqual(parseGuildMembers(guildPage([" Alpha ", "Beta"])), ["Alpha", "Beta"]);
|
||||
});
|
||||
|
||||
test("parseGuildMembers refuse une page sans membres", () => {
|
||||
assert.throws(() => parseGuildMembers("<html></html>"), /Aucun membre trouvé/);
|
||||
});
|
||||
|
||||
test("parseGuildMembers refuse les doublons", () => {
|
||||
assert.throws(() => parseGuildMembers(guildPage(["Alpha", "Alpha"])), /double/);
|
||||
});
|
||||
|
||||
test("getChanges détecte les arrivées et départs", () => {
|
||||
assert.deepEqual(getChanges(["Alpha", "Beta"], ["Beta", "Gamma"]), {
|
||||
added: ["Gamma"],
|
||||
removed: ["Alpha"],
|
||||
});
|
||||
});
|
||||
|
||||
test("assertPlausibleChange refuse une chute brutale de l'effectif", () => {
|
||||
const oldMembers = Array.from({ length: 20 }, (_, index) => `Membre-${index}`);
|
||||
assert.throws(
|
||||
() => assertPlausibleChange(oldMembers, ["Membre-0", "Membre-1"]),
|
||||
/Extraction suspecte/,
|
||||
);
|
||||
});
|
||||
|
||||
test("formatChanges produit le message Discord", () => {
|
||||
assert.equal(
|
||||
formatChanges({ added: ["Gamma"], removed: ["Alpha"] }),
|
||||
"⚔️ **Changement dans la liste des membres :**\n" +
|
||||
"➕ Nouveaux membres : Gamma\n" +
|
||||
"➖ Membres partis : Alpha",
|
||||
);
|
||||
});
|
||||
|
||||
test("getGuildMembers refuse une erreur HTTP", async () => {
|
||||
const fakeFetch = async () => ({ ok: false, status: 503 });
|
||||
await assert.rejects(getGuildMembers("https://example.test", fakeFetch), /HTTP 503/);
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue