require 'spec_helper' describe Banzai::Filter::EmojiFilter, lib: true do include FilterSpecHelper before do @original_asset_host = ActionController::Base.asset_host ActionController::Base.asset_host = 'https://foo.com' end after do ActionController::Base.asset_host = @original_asset_host end it 'replaces supported emoji' do doc = filter('
:heart:
') expect(doc.css('img').first.attr('src')).to eq 'https://foo.com/assets/2764.png' end it 'ignores unsupported emoji' do exp = act = ':foo:
' doc = filter(act) expect(doc.to_html).to match Regexp.escape(exp) end it 'correctly encodes the URL' do doc = filter(':+1:
') expect(doc.css('img').first.attr('src')).to eq 'https://foo.com/assets/1F44D.png' end it 'matches at the start of a string' do doc = filter(':+1:') expect(doc.css('img').size).to eq 1 end it 'matches at the end of a string' do doc = filter('This gets a :-1:') expect(doc.css('img').size).to eq 1 end it 'matches with adjacent text' do doc = filter('+1 (:+1:)') expect(doc.css('img').size).to eq 1 end it 'matches multiple emoji in a row' do doc = filter(':see_no_evil::hear_no_evil::speak_no_evil:') expect(doc.css('img').size).to eq 3 end it 'has a title attribute' do doc = filter(':-1:') expect(doc.css('img').first.attr('title')).to eq ':-1:' end it 'has an alt attribute' do doc = filter(':-1:') expect(doc.css('img').first.attr('alt')).to eq ':-1:' end it 'has an align attribute' do doc = filter(':8ball:') expect(doc.css('img').first.attr('align')).to eq 'absmiddle' end it 'has an emoji class' do doc = filter(':cat:') expect(doc.css('img').first.attr('class')).to eq 'emoji' end it 'has height and width attributes' do doc = filter(':dog:') img = doc.css('img').first expect(img.attr('width')).to eq '20' expect(img.attr('height')).to eq '20' end it 'keeps whitespace intact' do doc = filter('This deserves a :+1:, big time.') expect(doc.to_html).to match(/^This deserves a