diff options
Diffstat (limited to 'spec/services/projects')
-rw-r--r-- | spec/services/projects/operations/update_service_spec.rb | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/spec/services/projects/operations/update_service_spec.rb b/spec/services/projects/operations/update_service_spec.rb index 332c1600cde..731be907453 100644 --- a/spec/services/projects/operations/update_service_spec.rb +++ b/spec/services/projects/operations/update_service_spec.rb @@ -11,6 +11,67 @@ describe Projects::Operations::UpdateService do subject { described_class.new(project, user, params) } describe '#execute' do + context 'error tracking' do + context 'with existing error tracking setting' do + let(:params) do + { + error_tracking_setting_attributes: { + enabled: false, + api_url: 'http://url', + token: 'token' + } + } + end + + before do + create(:project_error_tracking_setting, project: project) + end + + it 'updates the settings' do + expect(result[:status]).to eq(:success) + + project.reload + expect(project.error_tracking_setting).not_to be_enabled + expect(project.error_tracking_setting.api_url).to eq('http://url') + expect(project.error_tracking_setting.token).to eq('token') + end + end + + context 'without an existing error tracking setting' do + let(:params) do + { + error_tracking_setting_attributes: { + enabled: true, + api_url: 'http://url', + token: 'token' + } + } + end + + it 'creates a setting' do + expect(result[:status]).to eq(:success) + + expect(project.error_tracking_setting).to be_enabled + expect(project.error_tracking_setting.api_url).to eq('http://url') + expect(project.error_tracking_setting.token).to eq('token') + end + end + + context 'with invalid parameters' do + let(:params) { {} } + + let!(:error_tracking_setting) do + create(:project_error_tracking_setting, project: project) + end + + it 'does nothing' do + expect(result[:status]).to eq(:success) + expect(project.reload.error_tracking_setting) + .to eq(error_tracking_setting) + end + end + end + context 'with inappropriate params' do let(:params) { { name: '' } } |