diff --git a/src/utils/slack/base.js b/src/utils/slack/base.js index 10992318d..ec672c4de 100644 --- a/src/utils/slack/base.js +++ b/src/utils/slack/base.js @@ -260,7 +260,7 @@ const getThreadTimestamp = (event) => event.thread_ts || event.ts; * @param {object} event - The Slack event. * @return {string | undefined} - The message without the bot mention. */ -const getMessageFromEvent = (event) => event.text?.replace(BOT_MENTION_REGEX, '').trim(); +const getMessageFromEvent = (event) => event.text?.replace(BOT_MENTION_REGEX, '').replace(/\s+/g, ' ').trim(); /** * Wraps the Slack say function to respond in a thread. This is necessary because diff --git a/test/utils/slack/base.test.js b/test/utils/slack/base.test.js index 2cda119c2..4319aac2d 100644 --- a/test/utils/slack/base.test.js +++ b/test/utils/slack/base.test.js @@ -30,11 +30,38 @@ import { loadProfileConfig, parseCSV, fetchFile, + getMessageFromEvent, } from '../../../src/utils/slack/base.js'; use(chaiAsPromised); describe('Base Slack Utils', () => { + describe('getMessageFromEvent ignores whitespace', () => { + it('should return the message text without leading or trailing whitespace', () => { + const event = { + text: ' Hello, World! ', + }; + const result = getMessageFromEvent(event); + expect(result).to.equal('Hello, World!'); + }); + + it('should return the message text without added whitespace', () => { + const event = { + text: 'Hello,World!', + }; + const result = getMessageFromEvent(event); + expect(result).to.equal('Hello,World!'); + }); + + it('should return the message text without multiple whitespaces between words', () => { + const event = { + text: 'Hello, World!', + }; + const result = getMessageFromEvent(event); + expect(result).to.equal('Hello, World!'); + }); + }); + describe('extractBaseURLFromInput', () => { it('extractURLFromSlackInput when empty', async () => { expect(extractURLFromSlackInput('')).to.be.null;