From a2a63060165c5d9dd744e7e303ea0a40536da17d Mon Sep 17 00:00:00 2001 From: Sonam Serchan Date: Sat, 29 Jul 2023 15:45:56 +1000 Subject: [PATCH] Update findMatchingEmoji function too return all matching emojis --- package.json | 2 +- src/emojis/emojiHandler.test.ts | 27 +++++++++++++++++++++++++++ src/emojis/emojiHandler.ts | 18 ++++++++---------- 3 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 src/emojis/emojiHandler.test.ts diff --git a/package.json b/package.json index 004591d..9be09b0 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "main": "index.js", "scripts": { "start": "functions-framework --target=xplorersbot", - "test": "task clean && jest --verbose --coverage tests", + "test": "task clean && jest --verbose --coverage --watch", "start-xplorersbot-server": "task clean && tsc && cd out && npx functions-framework --target=xplorersbot --signature-type=http", "start-openai-server": "task clean && tsc && cd out && npx functions-framework --target=xplorersbotOpenAI --signature-type=http" }, diff --git a/src/emojis/emojiHandler.test.ts b/src/emojis/emojiHandler.test.ts new file mode 100644 index 0000000..7e001fb --- /dev/null +++ b/src/emojis/emojiHandler.test.ts @@ -0,0 +1,27 @@ +import { findMatchingEmojiKeywords } from "./emojiHandler"; + +const emojis = { + react: ["react", "reactjs"], + javascript: ["js", "javascript"], + programming: ["javascript", "python"], +}; + +describe("Emoji handler", () => { + it("should return matching emojis for a given keyword", () => { + const keywords = Object.values(emojis).flat(); + + const matchingEmojis = findMatchingEmojiKeywords( + keywords, + "reactivity", + emojis + ); + expect(matchingEmojis).toEqual(["react"]); + + const matchingEmojis2 = findMatchingEmojiKeywords( + keywords, + "javascript", + emojis + ); + expect(matchingEmojis2).toEqual(["javascript", "programming"]); + }); +}); diff --git a/src/emojis/emojiHandler.ts b/src/emojis/emojiHandler.ts index a16158c..f04015c 100644 --- a/src/emojis/emojiHandler.ts +++ b/src/emojis/emojiHandler.ts @@ -15,22 +15,20 @@ export function getEmojisToReactWith(text: string): Array { return Array.from(new Set(emojisToReactWith)); } -function findMatchingEmojiKeywords( +export function findMatchingEmojiKeywords( keywords: string[], lowerCaseText: string, emojis: Record -): Array { - const matchingEmojiKeywords: Array = []; - +) { + const emojiKeys = Object.keys(emojis); for (const keyword of keywords) { //this is too deep too - if (lowerCaseText.includes(keyword)) { - matchingEmojiKeywords.push( - Object.keys(emojis).find((key) => - emojis[key].includes(keyword) - )! + const textHasKeyword = lowerCaseText.includes(keyword); + if (textHasKeyword) { + const matchingEmojis = emojiKeys.filter((key) => + emojis[key].includes(keyword) ); + return matchingEmojis; } } - return matchingEmojiKeywords; }