From da9a3d2c8a8d5a12627f3db6541e1ab64b65d4f6 Mon Sep 17 00:00:00 2001 From: Aster Fialla Date: Wed, 18 Feb 2026 12:37:39 -0500 Subject: [PATCH] finished tests for messageHelper! --- src/helpers/messageHelper.js | 10 +++--- tests/helpers/messageHelper.test.js | 52 ++++++++++++++++++++++++----- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/helpers/messageHelper.js b/src/helpers/messageHelper.js index 037040f..f8771e1 100644 --- a/src/helpers/messageHelper.js +++ b/src/helpers/messageHelper.js @@ -21,7 +21,7 @@ msgh.parseCommandArgs = function(content, commandName) { const message = content.slice(msgh.prefix.length + commandName.length).trim(); return message.match(/\\?.|^$/g).reduce((accumulator, chara) => { - if (chara === '"') { + if (chara === '\"' || chara === '\'') { // checks whether string is within quotes or not accumulator.quote ^= 1; } else if (!accumulator.quote && chara === ' '){ @@ -74,18 +74,18 @@ msgh.parseProxyTags = async function (authorId, content, attachmentUrl = null){ /** * Returns a text message that's too long as its text plus a file with the remaining text. * - * @async * @param {string} text - The text of the message. - * @returns {Object} The text and buffer object + * @returns {{text: string, file: Buffer | undefined}} The text and buffer object * */ -msgh.returnBufferFromText = async function (text) { +msgh.returnBufferFromText = function (text) { if (text.length > 2000) { const truncated = text.substring(0, 2000); - const restOfText = text.substring(2001); + const restOfText = text.substring(2000); const file = Buffer.from(restOfText, 'utf-8'); return {text: truncated, file: file} } + return {text: text, file: undefined} } export const messageHelper = msgh; diff --git a/tests/helpers/messageHelper.test.js b/tests/helpers/messageHelper.test.js index 430e07a..67ffbf5 100644 --- a/tests/helpers/messageHelper.test.js +++ b/tests/helpers/messageHelper.test.js @@ -20,17 +20,27 @@ jest.mock('@fluxerjs/core'); const {messageHelper} = require("../../src/helpers/messageHelper.js"); describe('messageHelper', () => { - // let memberHelper = {} - const authorId = "0001"; - const authorFull = "author#0001"; - const attachmentUrl = "../oya.png"; - const attachmentExpiration = new Date('2026-01-01T00.00.00.0000Z') 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"}, @@ -68,23 +78,47 @@ describe('messageHelper', () => { ['3', 'hello', attachmentUrl, {}], ['3', '--hello', attachmentUrl,{}], ])('Member %s returns correct proxy', (specificAuthorId, content, attachmentUrl, expected) => { + // Act return messageHelper.parseProxyTags(specificAuthorId, content, attachmentUrl).then((res) => { + // Assert expect(res).toEqual(expected); }) }); test('expect error to be thrown when no message is present', () => { - // Arrange + // Act return messageHelper.parseProxyTags('1', '', null).catch((res) => { + // Assert expect(res).toEqual(new Error(enums.err.NO_MESSAGE_SENT_WITH_PROXY)); }) }) - - }) - describe('parseCommandArgs', () => { + 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(() => {