Feature/48 database (#114)
* Add database and default values * Add ability to save a setting to the database * Get commands and events to use database * Setup and config command * Update commands to check roles per server * Different rules per server Signed-off-by: Ethan Lane <ethan@vylpes.com> * Different prefix per server Signed-off-by: Ethan Lane <ethan@vylpes.com> * Add verification system Signed-off-by: Ethan Lane <ethan@vylpes.com> * Disabled commands per server * Add devmode for default prefix * Update embeds * Fix broken tests
This commit is contained in:
parent
c8edd1b4c5
commit
6a00c49ef3
53 changed files with 1816 additions and 373 deletions
|
@ -1,6 +1,7 @@
|
|||
import { Guild, Message, TextChannel, User } from "discord.js";
|
||||
import { ICommandContext } from "../../../src/contracts/ICommandContext";
|
||||
import EventEmbed from "../../../src/helpers/embeds/EventEmbed";
|
||||
import SettingsHelper from "../../../src/helpers/SettingsHelper";
|
||||
|
||||
beforeEach(() => {
|
||||
process.env = {};
|
||||
|
@ -9,18 +10,11 @@ beforeEach(() => {
|
|||
|
||||
describe('Constructor', () => {
|
||||
test('Expect properties to be set', () => {
|
||||
process.env = {
|
||||
EMBED_COLOUR: '0xd52803',
|
||||
CHANNELS_LOGS_MESSAGE: 'message-logs',
|
||||
CHANNELS_LOGS_MEMBER: 'member-logs',
|
||||
CHANNELS_LOGS_MOD: 'mod-logs'
|
||||
}
|
||||
|
||||
const guild = {} as unknown as Guild;
|
||||
|
||||
const errorEmbed = new EventEmbed(guild, 'Event Message');
|
||||
|
||||
expect(errorEmbed.color?.toString()).toBe('13969411'); // 0xd52803 in decimal
|
||||
expect(errorEmbed.color?.toString()).toBe('3166394'); // 0x3050ba in decimal
|
||||
expect(errorEmbed.title).toBe('Event Message');
|
||||
expect(errorEmbed.guild).toBe(guild);
|
||||
});
|
||||
|
@ -88,15 +82,34 @@ describe('AddUser', () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe('AddReason', () => {
|
||||
test('Given a non-empty string is supplied, expect field with message', () => {
|
||||
const guild = {} as Guild;
|
||||
|
||||
const eventEmbed = new EventEmbed(guild, "Event Embed");
|
||||
|
||||
eventEmbed.addField = jest.fn();
|
||||
|
||||
eventEmbed.AddReason("Test reason");
|
||||
|
||||
expect(eventEmbed.addField).toBeCalledWith("Reason", "Test reason");
|
||||
});
|
||||
|
||||
test('Given an empty string is supplied, expect field with default message', () => {
|
||||
const guild = {} as Guild;
|
||||
|
||||
const eventEmbed = new EventEmbed(guild, "Event Embed");
|
||||
|
||||
eventEmbed.addField = jest.fn();
|
||||
|
||||
eventEmbed.AddReason("");
|
||||
|
||||
expect(eventEmbed.addField).toBeCalledWith("Reason", "*none*");
|
||||
});
|
||||
});
|
||||
|
||||
describe('SendToChannel', () => {
|
||||
test('Given channel can be found, expect embed to be sent to that channel', () => {
|
||||
process.env = {
|
||||
EMBED_COLOUR: '0xd52803',
|
||||
CHANNELS_LOGS_MESSAGE: 'message-logs',
|
||||
CHANNELS_LOGS_MEMBER: 'member-logs',
|
||||
CHANNELS_LOGS_MOD: 'mod-logs'
|
||||
}
|
||||
|
||||
const channelSend = jest.fn();
|
||||
|
||||
const channel = {
|
||||
|
@ -153,70 +166,127 @@ describe('SendToChannel', () => {
|
|||
});
|
||||
|
||||
describe('SendToMessageLogsChannel', () => {
|
||||
describe('Expect SendToChannel caleld with CHANNELS_LOGS_MESSAGE as parameter', () => {
|
||||
process.env = {
|
||||
EMBED_COLOUR: '0xd52803',
|
||||
CHANNELS_LOGS_MESSAGE: 'message-logs',
|
||||
CHANNELS_LOGS_MEMBER: 'member-logs',
|
||||
CHANNELS_LOGS_MOD: 'mod-logs'
|
||||
}
|
||||
|
||||
test('Given setting is set, expect SendToChannel to be called with value', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue("message-logs");
|
||||
|
||||
const guild = {} as unknown as Guild;
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const errorEmbed = new EventEmbed(guild, 'Event Message');
|
||||
|
||||
errorEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
errorEmbed.SendToMessageLogsChannel();
|
||||
await errorEmbed.SendToMessageLogsChannel();
|
||||
|
||||
expect(sendToChannel).toBeCalledWith('message-logs');
|
||||
expect(getSetting).toBeCalledWith("channels.logs.message", "guildId");
|
||||
});
|
||||
|
||||
test('Given setting is not set, expect function to return', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue(undefined);
|
||||
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const errorEmbed = new EventEmbed(guild, 'Event Message');
|
||||
|
||||
errorEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
await errorEmbed.SendToMessageLogsChannel();
|
||||
|
||||
expect(sendToChannel).not.toBeCalled();
|
||||
expect(getSetting).toBeCalledWith("channels.logs.message", "guildId");
|
||||
});
|
||||
});
|
||||
|
||||
describe('SendToMemberLogsChannel', () => {
|
||||
describe('Expect SendToChannel caleld with CHANNELS_LOGS_MEMBER as parameter', () => {
|
||||
process.env = {
|
||||
EMBED_COLOUR: '0xd52803',
|
||||
CHANNELS_LOGS_MESSAGE: 'message-logs',
|
||||
CHANNELS_LOGS_MEMBER: 'member-logs',
|
||||
CHANNELS_LOGS_MOD: 'mod-logs'
|
||||
}
|
||||
|
||||
test('Given setting is set, expect SendToChannel to be called with value', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue("member-logs");
|
||||
|
||||
const guild = {} as unknown as Guild;
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const errorEmbed = new EventEmbed(guild, 'Event Message');
|
||||
|
||||
errorEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
errorEmbed.SendToMemberLogsChannel();
|
||||
await errorEmbed.SendToMemberLogsChannel();
|
||||
|
||||
expect(sendToChannel).toBeCalledWith('member-logs');
|
||||
expect(getSetting).toBeCalledWith("channels.logs.member", "guildId");
|
||||
});
|
||||
|
||||
test('Given setting is not set, expect function to return', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue(undefined);
|
||||
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const errorEmbed = new EventEmbed(guild, 'Event Message');
|
||||
|
||||
errorEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
await errorEmbed.SendToMemberLogsChannel();
|
||||
|
||||
expect(sendToChannel).not.toBeCalled();
|
||||
expect(getSetting).toBeCalledWith("channels.logs.member", "guildId");
|
||||
});
|
||||
});
|
||||
|
||||
describe('SendToModLogsChannel', () => {
|
||||
describe('Expect SendToChannel caleld with CHANNELS_LOGS_MOD as parameter', () => {
|
||||
process.env = {
|
||||
EMBED_COLOUR: '0xd52803',
|
||||
CHANNELS_LOGS_MESSAGE: 'message-logs',
|
||||
CHANNELS_LOGS_MEMBER: 'member-logs',
|
||||
CHANNELS_LOGS_MOD: 'mod-logs'
|
||||
}
|
||||
|
||||
test('Given setting is set, expect SendToChannel to be called with value', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue("mod-logs");
|
||||
|
||||
const guild = {} as unknown as Guild;
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const errorEmbed = new EventEmbed(guild, 'Event Message');
|
||||
|
||||
errorEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
errorEmbed.SendToModLogsChannel();
|
||||
await errorEmbed.SendToModLogsChannel();
|
||||
|
||||
expect(sendToChannel).toBeCalledWith('mod-logs');
|
||||
expect(getSetting).toBeCalledWith("channels.logs.mod", "guildId");
|
||||
});
|
||||
|
||||
test('Given setting is not set, expect function to return', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue(undefined);
|
||||
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const errorEmbed = new EventEmbed(guild, 'Event Message');
|
||||
|
||||
errorEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
await errorEmbed.SendToModLogsChannel();
|
||||
|
||||
expect(sendToChannel).not.toBeCalled();
|
||||
expect(getSetting).toBeCalledWith("channels.logs.mod", "guildId");
|
||||
});
|
||||
});
|
|
@ -1,6 +1,7 @@
|
|||
import { Guild, Message, TextChannel, User } from "discord.js";
|
||||
import { ICommandContext } from "../../../src/contracts/ICommandContext";
|
||||
import LogEmbed from "../../../src/helpers/embeds/LogEmbed";
|
||||
import SettingsHelper from "../../../src/helpers/SettingsHelper";
|
||||
|
||||
beforeEach(() => {
|
||||
process.env = {};
|
||||
|
@ -32,7 +33,7 @@ describe('Constructor', () => {
|
|||
|
||||
const errorEmbed = new LogEmbed(context, 'Log Message');
|
||||
|
||||
expect(errorEmbed.color?.toString()).toBe('13969411'); // 0xd52803 in decimal
|
||||
expect(errorEmbed.color?.toString()).toBe('3166394'); // 0x3050ba in decimal
|
||||
expect(errorEmbed.title).toBe('Log Message');
|
||||
expect(errorEmbed.context).toBe(context);
|
||||
});
|
||||
|
@ -220,112 +221,187 @@ describe('SendToChannel', () => {
|
|||
});
|
||||
|
||||
describe('SendToMessageLogsChannel', () => {
|
||||
describe('Expect SendToChannel caleld with CHANNELS_LOGS_MESSAGE as parameter', () => {
|
||||
process.env = {
|
||||
EMBED_COLOUR: '0xd52803',
|
||||
CHANNELS_LOGS_MESSAGE: 'message-logs',
|
||||
CHANNELS_LOGS_MEMBER: 'member-logs',
|
||||
CHANNELS_LOGS_MOD: 'mod-logs'
|
||||
}
|
||||
|
||||
test('Given setting is set, expect SendToChannel to be called with value', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue("message-logs");
|
||||
|
||||
const guild = {} as unknown as Guild;
|
||||
|
||||
const messageChannelSend = jest.fn();
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
const message = {
|
||||
channel: {
|
||||
send: messageChannelSend
|
||||
}
|
||||
} as unknown as Message;
|
||||
guild: guild
|
||||
} as Message;
|
||||
|
||||
const context: ICommandContext = {
|
||||
name: 'command',
|
||||
name: 'log',
|
||||
args: [],
|
||||
message: message
|
||||
};
|
||||
|
||||
const errorEmbed = new LogEmbed(context, 'Event Message');
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const logEmbed = new LogEmbed(context, 'Event Message');
|
||||
|
||||
errorEmbed.SendToChannel = sendToChannel;
|
||||
logEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
errorEmbed.SendToMessageLogsChannel();
|
||||
await logEmbed.SendToMessageLogsChannel();
|
||||
|
||||
expect(sendToChannel).toBeCalledWith('message-logs');
|
||||
expect(getSetting).toBeCalledWith("channels.logs.message", "guildId");
|
||||
});
|
||||
|
||||
test('Given setting is not set, expect function to return', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue(undefined);
|
||||
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
const message = {
|
||||
guild: guild
|
||||
} as Message;
|
||||
|
||||
const context: ICommandContext = {
|
||||
name: 'log',
|
||||
args: [],
|
||||
message: message
|
||||
};
|
||||
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const logEmbed = new LogEmbed(context, 'Event Message');
|
||||
|
||||
logEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
await logEmbed.SendToMessageLogsChannel();
|
||||
|
||||
expect(sendToChannel).not.toBeCalled();
|
||||
expect(getSetting).toBeCalledWith("channels.logs.message", "guildId");
|
||||
});
|
||||
});
|
||||
|
||||
describe('SendToMemberLogsChannel', () => {
|
||||
describe('Expect SendToChannel caleld with CHANNELS_LOGS_MEMBER as parameter', () => {
|
||||
process.env = {
|
||||
EMBED_COLOUR: '0xd52803',
|
||||
CHANNELS_LOGS_MESSAGE: 'message-logs',
|
||||
CHANNELS_LOGS_MEMBER: 'member-logs',
|
||||
CHANNELS_LOGS_MOD: 'mod-logs'
|
||||
}
|
||||
|
||||
test('Given setting is set, expect SendToChannel to be called with value', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue("member-logs");
|
||||
|
||||
const guild = {} as unknown as Guild;
|
||||
|
||||
const messageChannelSend = jest.fn();
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
const message = {
|
||||
channel: {
|
||||
send: messageChannelSend
|
||||
}
|
||||
} as unknown as Message;
|
||||
guild: guild
|
||||
} as Message;
|
||||
|
||||
const context: ICommandContext = {
|
||||
name: 'command',
|
||||
name: 'log',
|
||||
args: [],
|
||||
message: message
|
||||
};
|
||||
|
||||
const errorEmbed = new LogEmbed(context, 'Event Message');
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const logEmbed = new LogEmbed(context, 'Event Message');
|
||||
|
||||
errorEmbed.SendToChannel = sendToChannel;
|
||||
logEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
errorEmbed.SendToMemberLogsChannel();
|
||||
await logEmbed.SendToMemberLogsChannel();
|
||||
|
||||
expect(sendToChannel).toBeCalledWith('member-logs');
|
||||
expect(getSetting).toBeCalledWith("channels.logs.member", "guildId");
|
||||
});
|
||||
|
||||
test('Given setting is not set, expect function to return', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue(undefined);
|
||||
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
const message = {
|
||||
guild: guild
|
||||
} as Message;
|
||||
|
||||
const context: ICommandContext = {
|
||||
name: 'log',
|
||||
args: [],
|
||||
message: message
|
||||
};
|
||||
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const logEmbed = new LogEmbed(context, 'Event Message');
|
||||
|
||||
logEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
await logEmbed.SendToMemberLogsChannel();
|
||||
|
||||
expect(sendToChannel).not.toBeCalled();
|
||||
expect(getSetting).toBeCalledWith("channels.logs.member", "guildId");
|
||||
});
|
||||
});
|
||||
|
||||
describe('SendToModLogsChannel', () => {
|
||||
describe('Expect SendToChannel caleld with CHANNELS_LOGS_MOD as parameter', () => {
|
||||
process.env = {
|
||||
EMBED_COLOUR: '0xd52803',
|
||||
CHANNELS_LOGS_MESSAGE: 'message-logs',
|
||||
CHANNELS_LOGS_MEMBER: 'member-logs',
|
||||
CHANNELS_LOGS_MOD: 'mod-logs'
|
||||
}
|
||||
|
||||
test('Given setting is set, expect SendToChannel to be called with value', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue("mod-logs");
|
||||
|
||||
const guild = {} as unknown as Guild;
|
||||
|
||||
const messageChannelSend = jest.fn();
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
const message = {
|
||||
channel: {
|
||||
send: messageChannelSend
|
||||
}
|
||||
} as unknown as Message;
|
||||
guild: guild
|
||||
} as Message;
|
||||
|
||||
const context: ICommandContext = {
|
||||
name: 'command',
|
||||
name: 'log',
|
||||
args: [],
|
||||
message: message
|
||||
};
|
||||
|
||||
const errorEmbed = new LogEmbed(context, 'Event Message');
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const logEmbed = new LogEmbed(context, 'Event Message');
|
||||
|
||||
errorEmbed.SendToChannel = sendToChannel;
|
||||
logEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
errorEmbed.SendToModLogsChannel();
|
||||
await logEmbed.SendToModLogsChannel();
|
||||
|
||||
expect(sendToChannel).toBeCalledWith('mod-logs');
|
||||
expect(getSetting).toBeCalledWith("channels.logs.mod", "guildId");
|
||||
});
|
||||
|
||||
test('Given setting is not set, expect function to return', async () => {
|
||||
const sendToChannel = jest.fn();
|
||||
const getSetting = jest.fn().mockResolvedValue(undefined);
|
||||
|
||||
const guild = {
|
||||
id: "guildId"
|
||||
} as unknown as Guild;
|
||||
|
||||
const message = {
|
||||
guild: guild
|
||||
} as Message;
|
||||
|
||||
const context: ICommandContext = {
|
||||
name: 'log',
|
||||
args: [],
|
||||
message: message
|
||||
};
|
||||
|
||||
SettingsHelper.GetSetting = getSetting;
|
||||
|
||||
const logEmbed = new LogEmbed(context, 'Event Message');
|
||||
|
||||
logEmbed.SendToChannel = sendToChannel;
|
||||
|
||||
await logEmbed.SendToModLogsChannel();
|
||||
|
||||
expect(sendToChannel).not.toBeCalled();
|
||||
expect(getSetting).toBeCalledWith("channels.logs.mod", "guildId");
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue