Files
PluralFlux/tests/helpers/webhookHelper.test.js

135 lines
4.6 KiB
JavaScript
Raw Normal View History

jest.mock('../../src/helpers/messageHelper.js')
const {messageHelper} = require("../../src/helpers/messageHelper.js");
2026-02-18 17:14:04 -05:00
jest.mock('../../src/helpers/messageHelper.js', () => {
return {messageHelper: {
parseProxyTags: jest.fn(),
returnBuffer: jest.fn()
}}
})
const {webhookHelper} = require("../../src/helpers/webhookHelper.js");
2026-02-18 17:14:04 -05:00
const {enums} = require("../../src/enums");
describe('webhookHelper', () => {
2026-02-18 17:14:04 -05:00
2026-02-18 21:24:41 -05:00
const client = {};
beforeEach(() => {
jest.resetModules();
jest.clearAllMocks();
})
describe(`sendMessageAsMember`, () => {
2026-02-18 17:14:04 -05:00
const content = "hi"
const attachments = new Map();
const message = {
client,
content: content,
attachments: attachments,
author: {
id: '123'
},
guild: {
guildId: '123'
},
reply: jest.fn()
}
const member = {proxy: "--text", name: 'somePerson', displayname: "Some Person"};
const proxyMessage = {message: content, member: member}
beforeEach(() => {
jest.spyOn(webhookHelper, 'replaceMessage');
})
test('calls parseProxyTags and returns if proxyMatch is empty object', async() => {
// Arrange
messageHelper.parseProxyTags.mockResolvedValue({});
// Act
return webhookHelper.sendMessageAsMember(client, message).then((res) => {
expect(res).toBeUndefined();
expect(messageHelper.parseProxyTags).toHaveBeenCalledTimes(1);
expect(messageHelper.parseProxyTags).toHaveBeenCalledWith(message.author.id, content, null);
expect(webhookHelper.replaceMessage).not.toHaveBeenCalled();
})
})
test('calls parseProxyTags and returns if proxyMatch is undefined', async() => {
// Arrange
messageHelper.parseProxyTags.mockResolvedValue(undefined);
// Act
return webhookHelper.sendMessageAsMember(client, message).then((res) => {
// Assert
expect(res).toBeUndefined();
expect(messageHelper.parseProxyTags).toHaveBeenCalledTimes(1);
expect(messageHelper.parseProxyTags).toHaveBeenCalledWith(message.author.id, content, null);
})
})
test('calls parseProxyTags with attachmentUrl', async() => {
// Arrange
message.attachments = {
size: 1,
first: () => {
return {url: 'oya.png'}
}
}
// message.attachments.set('attachment', {url: 'oya.png'})
// message.attachments.set('first', () => {return {url: 'oya.png'}})
messageHelper.parseProxyTags.mockResolvedValue(undefined);
// Act
return webhookHelper.sendMessageAsMember(client, message).then((res) => {
// Assert
expect(res).toBeUndefined();
expect(messageHelper.parseProxyTags).toHaveBeenCalledTimes(1);
expect(messageHelper.parseProxyTags).toHaveBeenCalledWith(message.author.id, content, 'oya.png');
})
})
test('if message matches member proxy but is not sent from a guild, throw an error', async() => {
// Arrange
messageHelper.parseProxyTags.mockResolvedValue(proxyMessage);
// Act
return webhookHelper.sendMessageAsMember(client, message).catch((res) => {
// Assert
expect(res).toEqual(new Error(enums.err.NOT_IN_SERVER));
})
})
test('if message matches member proxy and sent in a guild and has an attachment, reply to message with ping', async() => {
// Arrange
message.guildId = '123'
proxyMessage.hasAttachment = true;
messageHelper.parseProxyTags.mockResolvedValue(proxyMessage);
const expected = `${enums.misc.ATTACHMENT_SENT_BY} ${proxyMessage.member.displayname}`
// Act
return webhookHelper.sendMessageAsMember(client, message).then((res) => {
// Assert
expect(message.reply).toHaveBeenCalledTimes(1);
expect(message.reply).toHaveBeenCalledWith(expected);
expect(webhookHelper.replaceMessage).not.toHaveBeenCalled();
})
})
})
2026-02-18 17:14:04 -05:00
describe(`replaceMessage`, () => {
})
describe(`getOrCreateWebhook`, () => {
})
describe(`getWebhook`, () => {
})
afterEach(() => {
// restore the spy created with spyOn
jest.restoreAllMocks();
});
})