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
 |