# 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