require 'rails_helper' describe ServicesController, type: :controller do context 'successful Twitter sign in' do let(:user) { FactoryBot.create(:user) } before do sign_in user OmniAuth.config.test_mode = true OmniAuth.config.mock_auth[:twitter] = OmniAuth::AuthHash.new({ 'provider' => 'twitter', 'uid' => '12', 'info' => { 'nickname' => 'jack' }, 'credentials' => { 'token' => 'AAAA', 'secret' => 'BBBB' } }) request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:twitter] end after do OmniAuth.config.mock_auth[:twitter] = nil end subject { get :create, params: { provider: 'twitter' } } context 'no services connected' do it 'creates a service integration' do expect { subject }.to change { Service.count }.by(1) end end context 'a user has a service connected' do let(:other_user) { FactoryBot.create(:user) } let!(:service) { Services::Twitter.create(user: other_user, uid: 12) } it 'shows an error when trying to attach a service account which is already connected' do subject expect(flash[:error]).to eq("The Twitter account you are trying to connect is already connected to another #{APP_CONFIG['site_name']} account. If you are unable to disconnect the account yourself, please send us a Direct Message on Twitter: @retrospring.") end end end end