Compare commits
2 commits
f47d62faad
...
4ac6ec0a9d
Author | SHA1 | Date | |
---|---|---|---|
4ac6ec0a9d | |||
aee0557bb9 |
2 changed files with 75 additions and 6 deletions
66
src/tests/utils/events/citation.test.ts
Normal file
66
src/tests/utils/events/citation.test.ts
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
import { Attachment, Collection, EmbedBuilder } from "discord.js";
|
||||||
|
import { handleAttachments } from "../../../utils/events/citation";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a new random string
|
||||||
|
* @returns random string
|
||||||
|
*/
|
||||||
|
const newKey = () => Math.random().toString(36).substring(2);
|
||||||
|
|
||||||
|
describe("Attachements Handler", () => {
|
||||||
|
const map = new Map([
|
||||||
|
["e_attachements", "yes_s"],
|
||||||
|
["e_attachement", "no_s"],
|
||||||
|
]);
|
||||||
|
{
|
||||||
|
const name = "One image";
|
||||||
|
test(name, () => {
|
||||||
|
const embedExpected = new EmbedBuilder();
|
||||||
|
embedExpected.setImage("http://url");
|
||||||
|
|
||||||
|
const embedTest = new EmbedBuilder();
|
||||||
|
handleAttachments(
|
||||||
|
map,
|
||||||
|
embedTest,
|
||||||
|
new Collection([[newKey(), { name: "image.png", url: "http://url" } as Attachment]]),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(embedTest).toStrictEqual(embedExpected);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const name = "One link";
|
||||||
|
test(name, () => {
|
||||||
|
const embedExpected = new EmbedBuilder();
|
||||||
|
embedExpected.addFields({ name: "no_s", value: "[f](url)" });
|
||||||
|
|
||||||
|
const embedTest = new EmbedBuilder();
|
||||||
|
handleAttachments(
|
||||||
|
map,
|
||||||
|
embedTest,
|
||||||
|
new Collection([[newKey(), { name: "f", url: "url" } as Attachment]]),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(embedTest).toStrictEqual(embedExpected);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const name = "Two files";
|
||||||
|
test(name, () => {
|
||||||
|
const embedExpected = new EmbedBuilder();
|
||||||
|
embedExpected.addFields({ name: "yes_s", value: "[f](url), [f](url)" });
|
||||||
|
|
||||||
|
const embedTest = new EmbedBuilder();
|
||||||
|
handleAttachments(
|
||||||
|
map,
|
||||||
|
embedTest,
|
||||||
|
new Collection([
|
||||||
|
[newKey(), { name: "f", url: "url" } as Attachment],
|
||||||
|
[newKey(), { name: "f", url: "url" } as Attachment],
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(embedTest).toStrictEqual(embedExpected);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
|
@ -21,20 +21,23 @@ export const handleAttachments = (
|
||||||
|
|
||||||
let currentField = "";
|
let currentField = "";
|
||||||
const fields: APIEmbedField[] = [];
|
const fields: APIEmbedField[] = [];
|
||||||
let multiple = 0;
|
let multipleFields = 0;
|
||||||
|
let numberOfLinks = 0;
|
||||||
files.forEach((file, idx) => {
|
files.forEach((file, idx) => {
|
||||||
|
numberOfLinks++;
|
||||||
const fieldValue = currentField.length > 0 ? `${currentField}, ${file}` : file;
|
const fieldValue = currentField.length > 0 ? `${currentField}, ${file}` : file;
|
||||||
|
|
||||||
if (fieldValue.length > maxFieldValueLength) {
|
if (fieldValue.length > maxFieldValueLength) {
|
||||||
multiple = multiple === 0 && idx !== files.length - 1 ? 1 : multiple + 1;
|
multipleFields = multipleFields === 0 && idx !== files.length - 1 ? 1 : multipleFields + 1;
|
||||||
fields.push({
|
fields.push({
|
||||||
name:
|
name:
|
||||||
loc.get(
|
loc.get(
|
||||||
attachments.size > 1 && idx !== files.length - 1 ? "e_attachements" : "e_attachement",
|
attachments.size > 1 && numberOfLinks > 1 ? "e_attachements" : "e_attachement",
|
||||||
) + (multiple ? ` (${multiple})` : ""),
|
) + (multipleFields ? ` (${multipleFields})` : ""),
|
||||||
value: currentField,
|
value: currentField,
|
||||||
});
|
});
|
||||||
currentField = file;
|
currentField = file;
|
||||||
|
numberOfLinks = 0;
|
||||||
} else {
|
} else {
|
||||||
currentField = fieldValue;
|
currentField = fieldValue;
|
||||||
}
|
}
|
||||||
|
@ -43,8 +46,8 @@ export const handleAttachments = (
|
||||||
if (currentField.length > 0) {
|
if (currentField.length > 0) {
|
||||||
fields.push({
|
fields.push({
|
||||||
name:
|
name:
|
||||||
loc.get(attachments.size > 1 && multiple ? "e_attachements" : "e_attachement") +
|
loc.get(attachments.size > 1 && numberOfLinks > 1 ? "e_attachements" : "e_attachement") +
|
||||||
(multiple ? ` (${multiple + 1})` : ""),
|
(multipleFields ? ` (${multipleFields + 1})` : ""),
|
||||||
value: currentField,
|
value: currentField,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue