88 lines
2 KiB
JavaScript
88 lines
2 KiB
JavaScript
import MockAdapter from 'axios-mock-adapter';
|
||
import axios from '~/lib/utils/axios_utils';
|
||
import { initEmojiMap, EMOJI_VERSION } from '~/emoji';
|
||
|
||
export const emojiFixtureMap = {
|
||
atom: {
|
||
moji: '⚛',
|
||
description: 'atom symbol',
|
||
unicodeVersion: '4.1',
|
||
aliases: ['atom_symbol'],
|
||
},
|
||
bomb: {
|
||
moji: '💣',
|
||
unicodeVersion: '6.0',
|
||
description: 'bomb',
|
||
},
|
||
construction_worker_tone5: {
|
||
moji: '👷🏿',
|
||
unicodeVersion: '8.0',
|
||
description: 'construction worker tone 5',
|
||
},
|
||
five: {
|
||
moji: '5️⃣',
|
||
unicodeVersion: '3.0',
|
||
description: 'keycap digit five',
|
||
},
|
||
grey_question: {
|
||
moji: '❔',
|
||
unicodeVersion: '6.0',
|
||
description: 'white question mark ornament',
|
||
},
|
||
|
||
// used for regression tests
|
||
// black_heart MUST come before heart
|
||
// custard MUST come before star
|
||
black_heart: {
|
||
moji: '🖤',
|
||
unicodeVersion: '1.1',
|
||
description: 'black heart',
|
||
},
|
||
heart: {
|
||
moji: '❤',
|
||
unicodeVersion: '1.1',
|
||
description: 'heavy black heart',
|
||
},
|
||
custard: {
|
||
moji: '🍮',
|
||
unicodeVersion: '6.0',
|
||
description: 'custard',
|
||
},
|
||
star: {
|
||
moji: '⭐',
|
||
unicodeVersion: '5.1',
|
||
description: 'white medium star',
|
||
},
|
||
};
|
||
|
||
Object.keys(emojiFixtureMap).forEach((k) => {
|
||
emojiFixtureMap[k].name = k;
|
||
if (!emojiFixtureMap[k].aliases) {
|
||
emojiFixtureMap[k].aliases = [];
|
||
}
|
||
});
|
||
|
||
export async function initEmojiMock() {
|
||
const emojiData = Object.fromEntries(
|
||
Object.values(emojiFixtureMap).map((m) => {
|
||
const { name: n, moji: e, unicodeVersion: u, category: c, description: d } = m;
|
||
return [n, { c, e, d, u }];
|
||
}),
|
||
);
|
||
|
||
const mock = new MockAdapter(axios);
|
||
mock.onGet(`/-/emojis/${EMOJI_VERSION}/emojis.json`).reply(200, JSON.stringify(emojiData));
|
||
|
||
await initEmojiMap();
|
||
|
||
return mock;
|
||
}
|
||
|
||
export function describeEmojiFields(label, tests) {
|
||
describe.each`
|
||
field | accessor
|
||
${'name'} | ${(e) => e.name}
|
||
${'alias'} | ${(e) => e.aliases[0]}
|
||
${'description'} | ${(e) => e.description}
|
||
`(label, tests);
|
||
}
|