import test from 'brittle'
import { getAllEmojisData, getEmojiData, getDataOfSkin, emojify, unemojify, initEmojis } from '../index.js'
initEmojis({})
test('data has shortCodes', function (t) {
const grin = getAllEmojisData().find(emoji => emoji.hexcode === '1F601')
t.is(grin.emoji, '😁')
t.alike(grin.shortCodes, [
'beaming_face',
'grin'
])
})
test('getEmojiData() by short code', function (t) {
t.is(getEmojiData('rocket').emoji, '🚀')
})
test('getEmojiData() by hex', function (t) {
t.is(getEmojiData('1F680').emoji, '🚀')
})
test('getEmojiData() by emoji', function (t) {
t.is(getEmojiData('🚀').hexcode, '1F680')
})
test('getDataOfSkin()', function (t) {
const data = getDataOfSkin(3)
const ok0 = data.find(record => record.emoji === '👌')
const ok3 = data.find(record => record.emoji === '👌🏽')
t.absent(ok0, null)
t.is(ok3.tone, 3)
})
test('emojify() - ok', function (t) {
const withCodes = 'good :coffee: is :heart_on_fire:'
const withEmojis = emojify(withCodes)
t.is(withEmojis, 'good ☕️ is ❤️🔥')
})
test('emojify() - missing codes', function (t) {
const withCodes = 'good :coffee: is :great:'
const withEmojis = emojify(withCodes)
t.is(withEmojis, 'good ☕️ is :great:')
})
test('emojify() - custom icons', function (t) {
const withCodes = 'custom icons :keet_music: and :keet_pear:'
const withEmojis = emojify(withCodes)
t.is(withEmojis, 'custom icons keet_music and keet_pear')
})
test('emojify() - empty string', function (t) {
const withCodes = ''
const withEmojis = emojify(withCodes)
t.is(withEmojis, '')
})
test('unemojify() - ok', function (t) {
const withEmojis = 'good ☕️ is ❤️🔥'
const withCodes = unemojify(withEmojis)
t.is(withCodes, 'good :coffee: is :heart_on_fire:')
})
test('unemojify() - empty string', function (t) {
const withEmojis = ''
const withCodes = unemojify(withEmojis)
t.is(withCodes, '')
})
// Test to show the need to add additional match by hex for unemojify() function
test('unemojify() - emoji from android virtual keyboard', function (t) {
const emoji = '👎' // This is not a normal thumbs down emoji, it is copied from android virtual keyboard directly
const data = getEmojiData(emoji)
t.is(data, undefined)
const hexResultData = getEmojiData(
emoji.codePointAt(0).toString(16).toUpperCase()
)
t.is(hexResultData.shortCodes[0], '-1')
})