diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/services/error_tracking/list_projects_service_spec.rb | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/spec/services/error_tracking/list_projects_service_spec.rb b/spec/services/error_tracking/list_projects_service_spec.rb index 2ae3b1a65ec..6204ca87576 100644 --- a/spec/services/error_tracking/list_projects_service_spec.rb +++ b/spec/services/error_tracking/list_projects_service_spec.rb @@ -3,8 +3,6 @@ require 'spec_helper' describe ErrorTracking::ListProjectsService do - include ReactiveCachingHelpers - set(:user) { create(:user) } set(:project) { create(:project) } @@ -28,26 +26,24 @@ describe ErrorTracking::ListProjectsService do let(:result) { subject.execute } context 'with authorized user' do - let(:sentry_client) { spy(:sentry_client) } - before do expect(project).to receive(:error_tracking_setting).at_least(:once) .and_return(error_tracking_setting) end - context 'call sentry client' do + context 'set model attributes to new values' do + let(:new_api_url) { new_api_host + 'api/0/projects/' } + before do - synchronous_reactive_cache(error_tracking_setting) + expect(error_tracking_setting).to receive(:list_sentry_projects) + .and_return({ projects: [] }) end it 'uses new api_url and token' do - expect(Sentry::Client).to receive(:new) - .with(new_api_host + 'api/0/projects/', new_token) - .and_return(sentry_client) - expect(sentry_client).to receive(:list_projects).and_return([]) - subject.execute + expect(error_tracking_setting.api_url).to eq(new_api_url) + expect(error_tracking_setting.token).to eq(new_token) error_tracking_setting.reload expect(error_tracking_setting.api_url).to eq(sentry_url) expect(error_tracking_setting.token).to eq(token) @@ -150,11 +146,9 @@ describe ErrorTracking::ListProjectsService do context 'error_tracking_setting is nil' do let(:error_tracking_setting) { build(:project_error_tracking_setting) } + let(:new_api_url) { new_api_host + 'api/0/projects/' } before do - expect(project).to receive(:error_tracking_setting).at_least(:once) - .and_return(nil) - expect(project).to receive(:build_error_tracking_setting).once .and_return(error_tracking_setting) @@ -163,7 +157,16 @@ describe ErrorTracking::ListProjectsService do end it 'builds a new error_tracking_setting' do + expect(project.error_tracking_setting).to be_nil + expect(result[:projects]).to eq([:project1, :project2]) + + expect(error_tracking_setting.api_url).to eq(new_api_url) + expect(error_tracking_setting.token).to eq(new_token) + expect(error_tracking_setting.enabled).to be true + expect(error_tracking_setting.persisted?).to be false + expect(error_tracking_setting.project_id).not_to be_nil + expect(project.error_tracking_setting).to be_nil end end |