OverviewFilesCommitsIssuesDocsReleasesPeers

holepunchto-deps / @holepunchto / emojis / test / emoji-data.js

97 lines · javascript ref:
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')
})