mirror of
https://github.com/pieartsy/PluralFlux.git
synced 2026-04-14 20:15:28 +10:00
* converted import syntax to ES modules
removed unused methods
* got test sort of working (jest set up is not crashing but also not mocking correctly)
* adjusted beforeeach/beforeall so more pass
* more correct test setup
* converted import syntax to commonJS
removed unused methods
* got test sort of working (jest set up is not crashing but also not mocking correctly)
* adjusted beforeeach/beforeall so more pass
* more correct test setup
* more correct dockerfile and compose.yaml
* Revert "converted import syntax to commonJS"
This reverts commit 5ab0d62b
* updated jest to sort of work with es6
* separating out enum return from method return
* mostly working except for the weirdest error
* nevermind it wasn't actually working, gonna move on for now
* added babel to convert es modules to cjs
* finally figured out issue with tests (referencing the method directly in the test.each calls the real method not the mock in beforeEach())
* setup fixed more
* added error handling parseMemberCommand test
* renamed db to database
more tests and fixing logic for memberhelper
* upgraded fluxer.js
* moved import to helpers folder
* moved import to helpers folder
* more tests for member helper
* think i fixed weird error with webhook sending error when a user has no members
* simplified sendMessageAsAttachment
* added return to addFullMember so that addNewMember can reference it properly in strings
* test setup for messagehelper and webhookhelper
* readded line i shouldn't have removed in sendMessageAsMember
* fixed test and logic
* added test for memberHelper
* updated sendMessageAsAttachment to returnBufferFromText and updated commands/webhookHelper accordingly
* added tests for parseProxyTags and updated logic
* added "return" so tests dont terminate on failure and deleted env.jest
* finished tests for messageHelper!
* more cases for messageHelper just in case
* updating docstring for messageHelper parseProxyTags
* more tests for webhookhelper
* deleted extra file added during merge
* removed confusing brackets from enum docs
* finally mocking correctly
* adding more cases to messageHelper tests
* updating enums
* removed error response when proxy is sent without content
* , updated tests for webhookHelper and removed error response when proxy is sent without content
* added debounce to count guilds properly
* added todo note
* added tests for updateDisplayName
* edited help message trigger for updatePropic
* update message helper test to include space case
* update bot to suppress errors from API
* fixed bug for import not sending help text, added help text if you type a unrecognized command
* updated to be enum
* updated member helper and tests
* edit enums, tweak import content command
* removed unnecessary await and console.log
* made it easier to make a member
* added nicer error listing to importHelper
* updated documentation
* Merge branch 'main' of https://github.com/pieartsy/PluralFlux into add-tests
---------
Co-authored-by: Aster Fialla <asterfialla@gmail.com>
128 lines
6.8 KiB
JavaScript
128 lines
6.8 KiB
JavaScript
const env = require('dotenv');
|
|
env.config();
|
|
|
|
const {memberHelper} = require("../../src/helpers/memberHelper.js");
|
|
const {Message} = require("@fluxerjs/core");
|
|
const {fs} = require('fs');
|
|
const {enums} = require('../../src/enums');
|
|
const {tmp, setGracefulCleanup} = require('tmp');
|
|
|
|
jest.mock('../../src/helpers/memberHelper.js', () => {
|
|
return {memberHelper: {
|
|
getMembersByAuthor: jest.fn()
|
|
}}
|
|
})
|
|
|
|
jest.mock('tmp');
|
|
jest.mock('fs');
|
|
jest.mock('@fluxerjs/core');
|
|
|
|
const {messageHelper} = require("../../src/helpers/messageHelper.js");
|
|
|
|
describe('messageHelper', () => {
|
|
|
|
beforeEach(() => {
|
|
jest.resetModules();
|
|
jest.clearAllMocks();
|
|
})
|
|
|
|
describe('parseCommandArgs', () => {
|
|
test.each([
|
|
['pk;member', ['']],
|
|
['pk;member add somePerson "Some Person"', ['add', 'somePerson', 'Some Person']],
|
|
['pk;member add \"Some Person\"', ['add', 'Some Person']],
|
|
['pk;member add somePerson \'Some Person\'', ['add', 'somePerson', 'Some Person']],
|
|
['pk;member add somePerson \"\'Some\' Person\"', ['add', 'somePerson', 'Some Person']],
|
|
])('%s returns correct arguments', (content, expected) => {
|
|
// Arrange
|
|
const command = "member";
|
|
const result = messageHelper.parseCommandArgs(content, command);
|
|
expect(result).toEqual(expected);
|
|
})
|
|
})
|
|
|
|
describe(`parseProxyTags`, () => {
|
|
const membersFor1 = [
|
|
{name: "somePerson", proxy: "--text"},
|
|
{name: "someSecondPerson", proxy: undefined},
|
|
{name: "someOtherPerson", proxy: "?text}"},
|
|
{name: "someLastPerson", proxy: "{text}"},
|
|
{name: "someEmojiPerson", proxy: "⭐text"},
|
|
{name: "someSpacePerson", proxy: "! text"},
|
|
]
|
|
|
|
const membersFor2 = []
|
|
|
|
const membersFor3 = [
|
|
{name: "someOtherThirdPerson", proxy: undefined}
|
|
]
|
|
|
|
const attachmentUrl = "../oya.png"
|
|
|
|
beforeEach(() => {
|
|
memberHelper.getMembersByAuthor = jest.fn().mockImplementation((specificAuthorId) => {
|
|
if (specificAuthorId === "1") return membersFor1;
|
|
if (specificAuthorId === "2") return membersFor2;
|
|
if (specificAuthorId === "3") return membersFor3;
|
|
})
|
|
});
|
|
|
|
test.each([
|
|
['1', 'hello', null, {}],
|
|
['1', '--hello', null, {member: membersFor1[0], message: 'hello', hasAttachment: false}],
|
|
['1', 'hello', attachmentUrl, {}],
|
|
['1', '--hello', attachmentUrl, {member: membersFor1[0], message: 'hello', hasAttachment: true}],
|
|
['1', '--', attachmentUrl, {member: membersFor1[0], message: '', hasAttachment: true}],
|
|
['1', '?hello}', null, {member: membersFor1[2], message: 'hello', hasAttachment: false}],
|
|
['1', '{hello}', null, {member: membersFor1[3], message: 'hello', hasAttachment: false}],
|
|
['1', '⭐hello', null, {member: membersFor1[4], message: 'hello', hasAttachment: false}],
|
|
['1', '! hello', null, {member: membersFor1[5], message: 'hello', hasAttachment: false}],
|
|
['2', 'hello', null, undefined],
|
|
['2', '--hello', null, undefined],
|
|
['2', 'hello', attachmentUrl, undefined],
|
|
['2', '--hello', attachmentUrl,undefined],
|
|
['3', 'hello', null, {}],
|
|
['3', '--hello', null, {}],
|
|
['3', 'hello', attachmentUrl, {}],
|
|
['3', '--hello', attachmentUrl,{}],
|
|
])('ID %s with string %s returns correct proxy', async(specificAuthorId, content, attachmentUrl, expected) => {
|
|
// Act
|
|
return messageHelper.parseProxyTags(specificAuthorId, content, attachmentUrl).then((res) => {
|
|
// Assert
|
|
expect(res).toEqual(expected);
|
|
})
|
|
});
|
|
})
|
|
|
|
describe('returnBufferFromText', () => {
|
|
const charas2000 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
|
|
|
|
test('returns truncated text and buffer file when text is more than 2000 characters', () => {
|
|
// Arrange
|
|
|
|
const charasOver2000 = "bbbbb"
|
|
const expectedBuffer = Buffer.from(charasOver2000, 'utf-8');
|
|
const expected = {text: charas2000, file: expectedBuffer};
|
|
|
|
// Act
|
|
const result = messageHelper.returnBufferFromText(`${charas2000}${charasOver2000}`);
|
|
|
|
// Assert
|
|
expect(result).toEqual(expected);
|
|
})
|
|
|
|
test('returns text when text is 2000 characters or less', () => {
|
|
// Arrange
|
|
const expected = {text: charas2000, file: undefined};
|
|
// Act
|
|
const result = messageHelper.returnBufferFromText(`${charas2000}`);
|
|
// Assert
|
|
expect(result).toEqual(expected);
|
|
})
|
|
})
|
|
|
|
afterEach(() => {
|
|
// restore the spy created with spyOn
|
|
jest.restoreAllMocks();
|
|
});
|
|
}) |