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 = "";
|
||||
const fields: APIEmbedField[] = [];
|
||||
let multiple = 0;
|
||||
let multipleFields = 0;
|
||||
let numberOfLinks = 0;
|
||||
files.forEach((file, idx) => {
|
||||
numberOfLinks++;
|
||||
const fieldValue = currentField.length > 0 ? `${currentField}, ${file}` : file;
|
||||
|
||||
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({
|
||||
name:
|
||||
loc.get(
|
||||
attachments.size > 1 && idx !== files.length - 1 ? "e_attachements" : "e_attachement",
|
||||
) + (multiple ? ` (${multiple})` : ""),
|
||||
attachments.size > 1 && numberOfLinks > 1 ? "e_attachements" : "e_attachement",
|
||||
) + (multipleFields ? ` (${multipleFields})` : ""),
|
||||
value: currentField,
|
||||
});
|
||||
currentField = file;
|
||||
numberOfLinks = 0;
|
||||
} else {
|
||||
currentField = fieldValue;
|
||||
}
|
||||
|
@ -43,8 +46,8 @@ export const handleAttachments = (
|
|||
if (currentField.length > 0) {
|
||||
fields.push({
|
||||
name:
|
||||
loc.get(attachments.size > 1 && multiple ? "e_attachements" : "e_attachement") +
|
||||
(multiple ? ` (${multiple + 1})` : ""),
|
||||
loc.get(attachments.size > 1 && numberOfLinks > 1 ? "e_attachements" : "e_attachement") +
|
||||
(multipleFields ? ` (${multipleFields + 1})` : ""),
|
||||
value: currentField,
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue