diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-07-19 17:16:28 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-07-19 17:16:28 +0300 |
commit | e4384360a16dd9a19d4d2d25d0ef1f2b862ed2a6 (patch) | |
tree | 2fcdfa7dcdb9db8f5208b2562f4b4e803d671243 /spec/services/error_tracking/issue_update_service_spec.rb | |
parent | ffda4e7bcac36987f936b4ba515995a6698698f0 (diff) |
Add latest changes from gitlab-org/gitlab@16-2-stable-eev16.2.0-rc42
Diffstat (limited to 'spec/services/error_tracking/issue_update_service_spec.rb')
-rw-r--r-- | spec/services/error_tracking/issue_update_service_spec.rb | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/spec/services/error_tracking/issue_update_service_spec.rb b/spec/services/error_tracking/issue_update_service_spec.rb index 4dae6cc2fa0..989ebc86abe 100644 --- a/spec/services/error_tracking/issue_update_service_spec.rb +++ b/spec/services/error_tracking/issue_update_service_spec.rb @@ -113,17 +113,45 @@ RSpec.describe ErrorTracking::IssueUpdateService, feature_category: :error_track include_examples 'error tracking service sentry error handling', :update_issue context 'with integrated error tracking' do - let(:error) { create(:error_tracking_error, project: project) } - let(:arguments) { { issue_id: error.id, status: 'resolved' } } - let(:update_issue_response) { { updated: true, status: :success, closed_issue_iid: nil } } + let(:error_repository) { instance_double(Gitlab::ErrorTracking::ErrorRepository) } + let(:error) { build_stubbed(:error_tracking_open_api_error, project_id: project.id) } + let(:issue_id) { error.fingerprint } + let(:arguments) { { issue_id: issue_id, status: 'resolved' } } before do error_tracking_setting.update!(integrated: true) + + allow(update_service).to receive(:error_repository).and_return(error_repository) + allow(error_repository).to receive(:update_error) + .with(issue_id, status: 'resolved').and_return(updated) end - it 'resolves the error and responds with expected format' do - expect(update_service.execute).to eq(update_issue_response) - expect(error.reload.status).to eq('resolved') + context 'when update succeeded' do + let(:updated) { true } + + it 'returns success with updated true' do + expect(project.error_tracking_setting).to receive(:expire_issues_cache) + + expect(update_service.execute).to eq( + status: :success, + updated: true, + closed_issue_iid: nil + ) + end + end + + context 'when update failed' do + let(:updated) { false } + + it 'returns success with updated false' do + expect(project.error_tracking_setting).to receive(:expire_issues_cache) + + expect(update_service.execute).to eq( + status: :success, + updated: false, + closed_issue_iid: nil + ) + end end end end |