# frozen_string_literal: true require 'spec_helper' RSpec.describe Spearly::Auth::TeamSubscription do let!(:connection_double) { instance_double(Faraday::Connection) } before do stub_const('ENV', { 'SPEARLY_API_URL' => 'https://api.spearly.test' }) allow(Faraday).to receive(:new).and_return(connection_double) end describe '.get_team_subscriptions()' do let!(:response_double) { instance_double(Faraday::Response, status: 200, body: { 'data' => [{ 'id' => 'sub_1' }] }.to_json) } let!(:team_id) { '711' } let!(:params) { { service_name: 'cms' } } let!(:client) { Spearly::Auth::Client.new('token') } before do allow(connection_double).to receive(:run_request).and_return(response_double) end it 'makes GET request to /teams/:team_id/subscriptions' do uri_parsed = Addressable::URI.parse('/teams/711/subscriptions').normalize.to_s expect(connection_double).to receive(:run_request).with(:get, uri_parsed, params, 'Accept' => 'application/vnd.spearly.v2+json', 'Authorization' => 'token') client.get_team_subscriptions(team_id, params) end it 'returns data array if status is 200' do res = client.get_team_subscriptions(team_id, params) expect(res).to eq('data' => [{ 'id' => 'sub_1' }]) end it 'throws AuthorizationError if 401' do response_double = instance_double(Faraday::Response, status: 401) allow(connection_double).to receive(:run_request).and_return(response_double) expect do client.get_team_subscriptions(team_id, params) end.to raise_error(Spearly::Auth::AuthorizationError) end it 'throws NotFoundError if 404' do response_double = instance_double(Faraday::Response, status: 404) allow(connection_double).to receive(:run_request).and_return(response_double) expect do client.get_team_subscriptions(team_id, params) end.to raise_error(Spearly::Auth::NotFoundError) end it 'throws ServerError if 500' do response_double = instance_double(Faraday::Response, status: 500) allow(connection_double).to receive(:run_request).and_return(response_double) expect do client.get_team_subscriptions(team_id, params) end.to raise_error(Spearly::Auth::ServerError) end it 'throws ServiceUnavailableError if 503' do response_double = instance_double(Faraday::Response, status: 503) allow(connection_double).to receive(:run_request).and_return(response_double) expect do client.get_team_subscriptions(team_id, params) end.to raise_error(Spearly::Auth::ServiceUnavailableError) end end end