diff --git a/web_src/js/emoji.test.js b/web_src/js/emoji.test.js
new file mode 100644
index 0000000000..55e4787793
--- /dev/null
+++ b/web_src/js/emoji.test.js
@@ -0,0 +1,27 @@
+import {emojiString, emojiHTML} from './features/emoji.js';
+
+test('emojiString', () => {
+ expect(emojiString('+1')).toEqual('👍');
+ expect(emojiString('arrow_right')).toEqual('➡️');
+ expect(emojiString('european_union')).toEqual('🇪🇺');
+ expect(emojiString('eu')).toEqual('🇪🇺');
+
+ expect(emojiString('forgejo')).toEqual(':forgejo:');
+ expect(emojiString('frogejo')).toEqual(':frogejo:');
+ expect(emojiString('blobnom')).toEqual(':blobnom:');
+
+ expect(emojiString('not-a-emoji')).toEqual(':not-a-emoji:');
+});
+
+test('emojiHTML', () => {
+ expect(emojiHTML('+1')).toEqual('👍');
+ expect(emojiHTML('arrow_right')).toEqual('➡️');
+ expect(emojiHTML('european_union')).toEqual('🇪🇺');
+ expect(emojiHTML('eu')).toEqual('🇪🇺');
+
+ expect(emojiHTML('forgejo')).toEqual('
');
+ expect(emojiHTML('frogejo')).toEqual('
');
+ expect(emojiHTML('blobnom')).toEqual('
');
+
+ expect(emojiHTML('not-a-emoji')).toEqual(':not-a-emoji:');
+});
diff --git a/web_src/js/vitest.setup.js b/web_src/js/vitest.setup.js
index 5366958fb5..61a6453cf7 100644
--- a/web_src/js/vitest.setup.js
+++ b/web_src/js/vitest.setup.js
@@ -4,8 +4,9 @@ window.config = {
csrfToken: 'test-csrf-token-123456',
pageData: {},
i18n: {},
- customEmojis: {},
+ customEmojis: new Set(['forgejo', 'frogejo', 'blobnom']),
appSubUrl: '',
+ assetUrlPrefix: '/assets',
mentionValues: [
{key: 'user1 User 1', value: 'user1', name: 'user1', fullname: 'User 1', avatar: 'https://avatar1.com'},
{key: 'user2 User 2', value: 'user2', name: 'user2', fullname: 'User 2', avatar: 'https://avatar2.com'},