Skip to content
Extraits de code Groupes Projets
Valider 984a49f8 rédigé par Will Hunt's avatar Will Hunt
Parcourir les fichiers

Update tests and mock classes.

parent e8358e7a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
export class MockCollection<T1, T2> extends Map {
public array(): T2[] {
return [...this.values()];
}
public keyArray(): T1[] {
return [...this.keys()];
}
}
import {MockCollection} from "./collection";
import {MockGuild} from "./guild";
import {MockUser} from "./user";
export class MockDiscordClient {
public guilds = new MockCollection<string, MockGuild>();
public user: MockUser;
......@@ -37,39 +42,3 @@ export class MockDiscordClient {
this.testCallbacks[0]();
}
}
class MockMember {
public id = "";
constructor(id: string) {
this.id = id;
}
}
class MockUser {
public id = "";
constructor(id: string) {
this.id = id;
}
}
class MockGuild {
public channels = new MockCollection<string, any>();
public members = new MockCollection<string, MockMember>();
public id: string;
constructor(id: string, channels: any[]) {
this.id = id;
channels.forEach((item) => {
this.channels.set(item.id, item);
});
}
}
class MockCollection<T1, T2> extends Map {
public array(): T2[] {
return [...this.values()];
}
public keyArray(): T1[] {
return [...this.keys()];
}
}
import {MockCollection} from "./collection";
import {MockMember} from "./member";
export class MockGuild {
public channels = new MockCollection<string, any>();
public members = new MockCollection<string, MockMember>();
public id: string;
constructor(id: string, channels: any[]) {
this.id = id;
channels.forEach((item) => {
this.channels.set(item.id, item);
});
}
public _mockAddMember(member: MockMember) {
this.members.set(member.id, member);
}
}
import {MockUser} from "./user";
export class MockMember {
public id = "";
public presence = {status: "offline"}; // TODO: Mock this
public user: MockUser;
constructor(id: string, username: string) {
this.id = id;
this.user = new MockUser(this.id, username);
}
}
export class MockUser {
public id = "";
public username: string;
constructor(id: string, username: string = "") {
this.id = id;
this.username = username;
}
}
......@@ -42,6 +42,9 @@ describe("DiscordBot", () => {
auth: {
botToken: "blah",
},
bridge: {
domain: "localhost",
}
};
describe("run()", () => {
it("should resolve when ready.", () => {
......
import * as Chai from "chai";
import * as ChaiAsPromised from "chai-as-promised";
import * as log from "npmlog";
import * as Discord from "discord.js";
// import * as Proxyquire from "proxyquire";
import { MessageProcessor, MessageProcessorOpts } from "../src/messageprocessor";
import { MockGuild } from "./mocks/guild";
import { MockMember } from "./mocks/member";
Chai.use(ChaiAsPromised);
const expect = Chai.expect;
log.level = "silly";
// const assert = Chai.assert;
describe("MessageProcessor", () => {
describe("init", () => {
it("constructor", () => {
new MessageProcessor(new MessageProcessorOpts("localhost"));
});
});
describe("FormatDiscordMessage", () => {
it("processes plain text messages correctly", () => {
const processor = new MessageProcessor(new MessageProcessorOpts("localhost"));
const msg = new Discord.Message(null,null,null);
msg.content = "Hello World!";
const result = processor.FormatDiscordMessage(msg);
Chai.assert(result.body, "Hello World!");
Chai.assert(result.formatted_body, "Hello World!");
});
it("processes markdown messages correctly.", () => {
const processor = new MessageProcessor(new MessageProcessorOpts("localhost"));
const msg = new Discord.Message(null,null,null);
msg.content = "Hello *World*!";
const result = processor.FormatDiscordMessage(msg);
Chai.assert.equal(result.body, "Hello *World*!");
Chai.assert.equal(result.formatted_body, "<p>Hello <em>World</em>!</p>\n");
});
});
describe("ReplaceMembers", () => {
it("processes members missing from the guild correctly", () => {
const processor = new MessageProcessor(new MessageProcessorOpts("localhost"));
const guild :any = new MockGuild("123", []);
const channel = new Discord.TextChannel(guild,null);
const msg = new Discord.Message(channel,null,null);
let content = "Hello <@!12345>";
content = processor.ReplaceMembers(content, msg);
Chai.assert.equal(content, "Hello @_discord_12345:localhost");
});
it("processes members with usernames correctly", () => {
const processor = new MessageProcessor(new MessageProcessorOpts("localhost"));
const guild :any = new MockGuild("123", []);
guild._mockAddMember(new MockMember("12345", "TestUsername"));
const channel = new Discord.TextChannel(guild,null);
const msg = new Discord.Message(channel,null,null);
let content = "Hello <@!12345>";
content = processor.ReplaceMembers(content, msg);
Chai.assert.equal(content, "Hello TestUsername");
});
});
describe("ReplaceChannels", () => {
it("processes unknown channel correctly", () => {
const processor = new MessageProcessor(new MessageProcessorOpts("localhost"));
const guild :any = new MockGuild("123", []);
const channel = new Discord.TextChannel(guild,{id:"456", name:"TestChannel"});
const msg = new Discord.Message(channel,null,null);
let content = "Hello <#123456789>";
content = processor.ReplaceChannels(content, msg);
Chai.assert.equal(content, "Hello [#123456789](https://matrix.to/#/#_discord_123_123456789:localhost)");
});
it("processes channels correctly", () => {
const processor = new MessageProcessor(new MessageProcessorOpts("localhost"));
const guild :any = new MockGuild("123", []);
const channel = new Discord.TextChannel(guild,{id:"456", name:"TestChannel"});
guild.channels.set("456", channel);
const msg = new Discord.Message(channel,null,null);
let content = "Hello <#456>";
content = processor.ReplaceChannels(content, msg);
Chai.assert.equal(content, "Hello [#TestChannel](https://matrix.to/#/#_discord_123_456:localhost)");
});
});
});
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter