forked from PluralFlux/PluralFlux
added the remaining webhook tests
This commit is contained in:
@@ -14,10 +14,44 @@ const {webhookHelper} = require("../../src/helpers/webhookHelper.js");
|
|||||||
const {enums} = require("../../src/enums");
|
const {enums} = require("../../src/enums");
|
||||||
|
|
||||||
describe('webhookHelper', () => {
|
describe('webhookHelper', () => {
|
||||||
|
const channelId = '123';
|
||||||
|
const authorId = '456';
|
||||||
|
const guildId = '789';
|
||||||
|
const text = "hello";
|
||||||
|
let client, member, attachments, message, webhook;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
jest.resetModules();
|
jest.resetModules();
|
||||||
jest.clearAllMocks();
|
jest.clearAllMocks();
|
||||||
|
client = {
|
||||||
|
channels: {
|
||||||
|
get: jest.fn().mockReturnValue(channelId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
member = {proxy: "--text", name: 'somePerson', displayname: "Some Person", propic: 'oya.png'};
|
||||||
|
attachments = {
|
||||||
|
size: 1,
|
||||||
|
first: () => {return channelId;}
|
||||||
|
};
|
||||||
|
|
||||||
|
message = {
|
||||||
|
client,
|
||||||
|
channelId: channelId,
|
||||||
|
content: text,
|
||||||
|
attachments: attachments,
|
||||||
|
author: {
|
||||||
|
id: authorId
|
||||||
|
},
|
||||||
|
guild: {
|
||||||
|
guildId: guildId
|
||||||
|
},
|
||||||
|
reply: jest.fn().mockResolvedValue(),
|
||||||
|
delete: jest.fn().mockResolvedValue()
|
||||||
|
}
|
||||||
|
|
||||||
|
webhook = {
|
||||||
|
send: async() => jest.fn().mockResolvedValue()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
describe(`sendMessageAsMember`, () => {
|
describe(`sendMessageAsMember`, () => {
|
||||||
@@ -137,38 +171,6 @@ describe('webhookHelper', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
describe(`replaceMessage`, () => {
|
describe(`replaceMessage`, () => {
|
||||||
const channelId = '123';
|
|
||||||
const authorId = '456';
|
|
||||||
const guildId = '789';
|
|
||||||
const text = "hello";
|
|
||||||
const client = {
|
|
||||||
channels: {
|
|
||||||
get: jest.fn().mockReturnValue(channelId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const member = {proxy: "--text", name: 'somePerson', displayname: "Some Person", propic: 'oya.png'};
|
|
||||||
const attachments= {
|
|
||||||
size: 1,
|
|
||||||
first: () => {return channelId;}
|
|
||||||
};
|
|
||||||
const message = {
|
|
||||||
client,
|
|
||||||
channelId: channelId,
|
|
||||||
content: text,
|
|
||||||
attachments: attachments,
|
|
||||||
author: {
|
|
||||||
id: authorId
|
|
||||||
},
|
|
||||||
guild: {
|
|
||||||
guildId: guildId
|
|
||||||
},
|
|
||||||
reply: jest.fn().mockResolvedValue(),
|
|
||||||
delete: jest.fn().mockResolvedValue()
|
|
||||||
}
|
|
||||||
|
|
||||||
const webhook = {
|
|
||||||
send: async() => jest.fn().mockResolvedValue()
|
|
||||||
}
|
|
||||||
|
|
||||||
test('does not call anything if text is 0 or message has no attachments', async() => {
|
test('does not call anything if text is 0 or message has no attachments', async() => {
|
||||||
// Arrange
|
// Arrange
|
||||||
@@ -239,11 +241,63 @@ describe('webhookHelper', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
describe(`getOrCreateWebhook`, () => {
|
describe(`getOrCreateWebhook`, () => {
|
||||||
|
let channel;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
channel = {
|
||||||
|
createWebhook: jest.fn().mockResolvedValue()
|
||||||
|
}
|
||||||
|
jest.spyOn(webhookHelper, 'getWebhook').mockResolvedValue(webhook);
|
||||||
|
})
|
||||||
|
|
||||||
|
test('throws error if channel does not allow webhooks', async() => {
|
||||||
|
channel.createWebhook = false;
|
||||||
|
|
||||||
|
await expect(webhookHelper.getOrCreateWebhook(client, channel)).rejects.toThrow(enums.err.NO_WEBHOOKS_ALLOWED);
|
||||||
|
})
|
||||||
|
|
||||||
|
test('calls getWebhook if channel allows webhooks and returns webhook', async() => {
|
||||||
|
const res = await webhookHelper.getOrCreateWebhook(client, channel);
|
||||||
|
expect(webhookHelper.getWebhook).toHaveBeenCalledTimes(1);
|
||||||
|
expect(webhookHelper.getWebhook).toHaveBeenCalledWith(client, channel);
|
||||||
|
expect(res).toEqual(webhook);
|
||||||
|
})
|
||||||
|
|
||||||
|
test("calls createWebhook if getWebhook doesn't return webhook", async() => {
|
||||||
|
jest.spyOn(webhookHelper, 'getWebhook').mockResolvedValue();
|
||||||
|
await webhookHelper.getOrCreateWebhook(client, channel);
|
||||||
|
expect(channel.createWebhook).toHaveBeenCalledTimes(1);
|
||||||
|
expect(channel.createWebhook).toHaveBeenCalledWith({name: 'PluralFlux Proxy Webhook'});
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe(`getWebhook`, () => {
|
describe(`getWebhook`, () => {
|
||||||
|
let webhook1, webhook2, channel;
|
||||||
|
beforeEach(() => {
|
||||||
|
webhook1 = {name: 'PluralFlux Proxy Webhook'};
|
||||||
|
webhook2 = {name: 'other webhook'};
|
||||||
|
channel = {
|
||||||
|
fetchWebhooks: jest.fn().mockResolvedValue([webhook1, webhook2])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
test('calls fetchWebhooks and returns correct webhook', async() => {
|
||||||
|
// Act
|
||||||
|
const res = await webhookHelper.getWebhook(client, channel);
|
||||||
|
// Assert
|
||||||
|
expect(res).toEqual(webhook1);
|
||||||
|
expect(channel.fetchWebhooks).toHaveBeenCalledTimes(1);
|
||||||
|
expect(channel.fetchWebhooks).toHaveBeenCalledWith();
|
||||||
|
})
|
||||||
|
|
||||||
|
test('if fetchWebhooks returns no webhooks, return', async() => {
|
||||||
|
// Arrange
|
||||||
|
channel.fetchWebhooks = jest.fn().mockResolvedValue([]);
|
||||||
|
// Act
|
||||||
|
const res = await webhookHelper.getWebhook(client, channel);
|
||||||
|
// Assert
|
||||||
|
expect(res).toBeUndefined();
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user