# encoding: UTF-8
require 'test_helper'
module Quesadilla
class EmojiTest < TestCase
def test_that_it_supports_emoji
extraction = extract('Something with 👨 beardface')
expected = {
display_text: 'Something with 👨 beardface',
display_html: 'Something with 👨 beardface',
entities: []
}
assert_equal expected, extraction
end
def test_that_it_supports_emoji_with_other_entities
extraction = extract('Something #tagged with 👨 beardface')
expected = {
display_text: 'Something #tagged with 👨 beardface',
display_html: 'Something #tagged with 👨 beardface',
entities: [
{
type: 'hashtag',
text: '#tagged',
display_text: '#tagged',
hashtag: 'tagged',
indices: [10, 17],
display_indices: [10, 17]
}
]
}
assert_equal expected, extraction
extraction = extract('After 💇 #foo 👮 **Yep**')
expected = {
display_text: 'After 💇 #foo 👮 Yep',
display_html: 'After 💇 #foo 👮 Yep',
entities: [
{
type: 'hashtag',
text: '#foo',
display_text: '#foo',
indices: [8, 12],
hashtag: 'foo',
display_indices: [8, 12]
},
{
type: 'double_emphasis',
text: '**Yep**',
display_text: 'Yep',
indices: [15, 22],
display_indices: [15, 18]
}
]
}
assert_equal expected, extraction
end
def test_that_it_support_the_colon_syntax
extraction = extract('Beardface is :man:')
expected = {
display_text: 'Beardface is 👨',
display_html: 'Beardface is 👨',
entities: []
}
assert_equal expected, extraction
extraction = extract('Beardface is `not here :man:` :man:')
expected = {
display_text: 'Beardface is not here :man: 👨',
display_html: 'Beardface is not here :man:
👨',
entities: [
{
type: 'code',
text: '`not here :man:`',
display_text: 'not here :man:',
indices: [13, 29],
display_indices: [13, 27]
}
]
}
assert_equal expected, extraction
# TODO: This is broken. Original indicies are messed up if a named emoji is before another entity
# extraction = extract('Something #tagged with :man: **beardface**')
# expected = {
# display_text: 'Something #tagged with 👨 beardface',
# display_html: 'Something #tagged with 👨 beardface',
# entities: [
# {
# type: 'hashtag',
# text: '#tagged',
# display_text: '#tagged',
# hashtag: 'tagged',
# indices: [10, 17],
# display_indices: [10, 17]
# },
# {
# type: 'double_emphasis',
# text: '**beardface**',
# display_text: 'beardface',
# indices: [29, 42],
# display_indices: [30, 39]
# }
# ]
# }
# assert_equal expected, extraction
end
def test_totally_invalid_emoji
bogus_text = 'Q14hMG4vA1RwLU3gQT9ENs7S.jpeg:Amazon:photo'
extraction = extract(bogus_text)
assert_equal bogus_text, extraction[:display_text]
assert_equal [], extraction[:entities]
end
end
end