38 lines
		
	
	
		
			995 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			995 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| RSpec.shared_examples 'BrowserDetection' do
 | |
|   subject { described_class.new(user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1 Safari/605.1.15') }
 | |
| 
 | |
|   describe '#detection' do
 | |
|     it 'sets a Browser instance as detection' do
 | |
|       expect(subject.detection)
 | |
|         .to be_a(Browser::Safari)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe '#browser' do
 | |
|     it 'returns browser name from id' do
 | |
|       expect(subject.browser)
 | |
|         .to eq(:safari)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe '#platform' do
 | |
|     it 'returns detected platform' do
 | |
|       expect(subject.platform)
 | |
|         .to eq(:mac)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe 'Callbacks' do
 | |
|     describe 'populating the user_agent value' do
 | |
|       subject { Fabricate.build described_class.name.underscore.to_sym, user_agent: nil }
 | |
| 
 | |
|       it 'changes nil to empty string' do
 | |
|         expect { subject.save }
 | |
|           .to change(subject, :user_agent).from(nil).to('')
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |