Skip to content
Extraits de code Groupes Projets
Valider 628677fc rédigé par Andrew Morgan andrew@amorgan.xyz's avatar Andrew Morgan andrew@amorgan.xyz
Parcourir les fichiers

Fixed issues and added tests

parent 0b8e25a7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -99,19 +99,17 @@ export class MatrixEventProcessor {
}
public ReplaceDiscordEmoji(content: string, guild: Discord.Guild): string {
console.log("Gonna replace")
let results = DISCORD_EMOJI_REGEX.exec(content);
while (results !== null) {
const emojiName = results[1];
const emojiNameWithColons = results[0];
// Check if this emoji exists in the guild
if(guild.emojis[emojiName] !== null) {
const emoji = guild.emojis.find((e) => e.name === emojiName);
if (emoji) {
// Replace :a: with <:a:123ID123>
const emojiID = guild.emojis.find((emoji) => { return emoji.name === emojiName }).id;
content = content.replace(emojiNameWithColons, `<${emojiNameWithColons}${emojiID}>`);
content = content.replace(emojiNameWithColons, `<${emojiNameWithColons}${emoji.id}>`);
}
results = DISCORD_EMOJI_REGEX.exec(content);
}
return content;
......
export class MockCollection<T1, T2> extends Map {
import { Collection } from "discord.js";
export class MockCollection<T1, T2> extends Collection<T1, T2> {
public array(): T2[] {
return [...this.values()];
}
......
export class MockEmoji {
constructor (public id: string = "", public name = "") { }
}
import {MockCollection} from "./collection";
import {MockMember} from "./member";
import {MockEmoji} from "./emoji";
import {Channel} from "discord.js";
export class MockGuild {
public channels = new MockCollection<string, Channel>();
public members = new MockCollection<string, MockMember>();
public emojis = new MockCollection<string, MockEmoji>();
public id: string;
public name: string;
constructor(id: string, channels: any[] = [], name: string = null) {
......
......@@ -7,7 +7,9 @@ import * as Proxyquire from "proxyquire";
import { PresenceHandler } from "../src/presencehandler";
import { DiscordBot } from "../src/bot";
import { MockGuild } from "./mocks/guild";
import { MockCollection } from "./mocks/collection";
import { MockMember } from "./mocks/member";
import { MockEmoji } from "./mocks/emoji";
import {MatrixEventProcessor, MatrixEventProcessorOpts} from "../src/matrixeventprocessor";
import {DiscordBridgeConfig} from "../src/config";
import {MessageProcessor, MessageProcessorOpts} from "../src/messageprocessor";
......@@ -204,7 +206,42 @@ describe("MatrixEventProcessor", () => {
}, {avatar_url: "test"}, mockChannel as any);
Chai.assert.equal(evt.description, "@ here Hello!");
});
// TODO: Add a test for replaceDiscordEmoji
it("Should process custom discord emojis.", () => {
const processor = createMatrixEventProcessor(false, false, true);
const mockEmoji = new MockEmoji("123", "supercake");
const mockCollectionEmojis = new MockCollection<string, MockEmoji>();
mockCollectionEmojis.set("123", mockEmoji);
const mockChannelEmojis = new MockChannel("test", {
emojis: mockCollectionEmojis,
});
const evt = processor.EventToEmbed({
sender: "@test:localhost",
content: {
body: "I like :supercake:",
},
}, {avatar_url: "test"}, mockChannelEmojis as any);
Chai.assert.equal(evt.description, "I like <:supercake:123>");
});
it("Should not process invalid custom discord emojis.", () => {
const processor = createMatrixEventProcessor(false, false, true);
const mockEmoji = new MockEmoji("123", "supercake");
const mockCollectionEmojis = new MockCollection<string, MockEmoji>();
mockCollectionEmojis.set("123", mockEmoji);
const mockChannelEmojis = new MockChannel("test", {
emojis: mockCollectionEmojis,
});
const evt = processor.EventToEmbed({
sender: "@test:localhost",
content: {
body: "I like :lamecake:",
},
}, {avatar_url: "test"}, mockChannelEmojis as any);
Chai.assert.equal(evt.description, "I like :lamecake:");
});
});
describe("FindMentionsInPlainBody", () => {
it("processes mentioned username correctly", async () => {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter