| 
									
										
										
										
											2017-09-19 02:42:40 +02:00
										 |  |  | require 'rails_helper' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | RSpec.describe CustomEmoji, type: :model do | 
					
						
							| 
									
										
										
										
											2018-04-10 09:46:27 -04:00
										 |  |  |   describe '#search' do | 
					
						
							|  |  |  |     let(:custom_emoji) { Fabricate(:custom_emoji, shortcode: shortcode) } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-04 20:36:53 +10:00
										 |  |  |     subject { described_class.search(search_term) } | 
					
						
							| 
									
										
										
										
											2018-04-10 09:46:27 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     context 'shortcode is exact' do | 
					
						
							|  |  |  |       let(:shortcode) { 'blobpats' } | 
					
						
							|  |  |  |       let(:search_term) { 'blobpats' } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it 'finds emoji' do | 
					
						
							|  |  |  |         is_expected.to include(custom_emoji) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context 'shortcode is partial' do | 
					
						
							|  |  |  |       let(:shortcode) { 'blobpats' } | 
					
						
							|  |  |  |       let(:search_term) { 'blob' } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it 'finds emoji' do | 
					
						
							|  |  |  |         is_expected.to include(custom_emoji) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-08 15:28:17 +09:00
										 |  |  |   describe '#local?' do | 
					
						
							|  |  |  |     let(:custom_emoji) { Fabricate(:custom_emoji, domain: domain) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     subject { custom_emoji.local? } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context 'domain is nil' do | 
					
						
							|  |  |  |       let(:domain) { nil } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it 'returns true' do | 
					
						
							|  |  |  |         is_expected.to be true | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context 'domain is present' do | 
					
						
							|  |  |  |       let(:domain) { 'example.com' } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it 'returns false' do | 
					
						
							|  |  |  |         is_expected.to be false | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe '#object_type' do | 
					
						
							|  |  |  |     it 'returns :emoji' do | 
					
						
							|  |  |  |       custom_emoji = Fabricate(:custom_emoji) | 
					
						
							|  |  |  |       expect(custom_emoji.object_type).to be :emoji | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-19 02:42:40 +02:00
										 |  |  |   describe '.from_text' do | 
					
						
							|  |  |  |     let!(:emojo) { Fabricate(:custom_emoji) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     subject { described_class.from_text(text, nil) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context 'with plain text' do | 
					
						
							|  |  |  |       let(:text) { 'Hello :coolcat:' } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it 'returns records used via shortcodes in text' do | 
					
						
							|  |  |  |         is_expected.to include(emojo) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context 'with html' do | 
					
						
							|  |  |  |       let(:text) { '<p>Hello :coolcat:</p>' } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it 'returns records used via shortcodes in text' do | 
					
						
							|  |  |  |         is_expected.to include(emojo) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2018-12-11 04:30:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   describe 'pre_validation' do | 
					
						
							|  |  |  |     let(:custom_emoji) { Fabricate(:custom_emoji, domain: 'wWw.MaStOdOn.CoM') } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should downcase' do | 
					
						
							|  |  |  |       custom_emoji.valid? | 
					
						
							|  |  |  |       expect(custom_emoji.domain).to eq('www.mastodon.com') | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-09-19 02:42:40 +02:00
										 |  |  | end |