diff options
Diffstat (limited to 'spec/services/system_notes')
8 files changed, 111 insertions, 18 deletions
diff --git a/spec/services/system_notes/alert_management_service_spec.rb b/spec/services/system_notes/alert_management_service_spec.rb new file mode 100644 index 00000000000..403763d5fd9 --- /dev/null +++ b/spec/services/system_notes/alert_management_service_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe ::SystemNotes::AlertManagementService do + let_it_be(:author) { create(:user) } + let_it_be(:project) { create(:project, :repository) } + let_it_be(:noteable) { create(:alert_management_alert, :with_issue, :acknowledged, project: project) } + + describe '#change_alert_status' do + subject { described_class.new(noteable: noteable, project: project, author: author).change_alert_status(noteable) } + + it_behaves_like 'a system note' do + let(:action) { 'status' } + end + + it 'has the appropriate message' do + expect(subject.note).to eq("changed the status to **Acknowledged**") + end + end + + describe '#new_alert_issue' do + let_it_be(:issue) { noteable.issue } + + subject { described_class.new(noteable: noteable, project: project, author: author).new_alert_issue(noteable, issue) } + + it_behaves_like 'a system note' do + let(:action) { 'alert_issue_added' } + end + + it 'has the appropriate message' do + expect(subject.note).to eq("created issue #{issue.to_reference(project)} for this alert") + end + end +end diff --git a/spec/services/system_notes/base_service_spec.rb b/spec/services/system_notes/base_service_spec.rb index 96788b05829..efb165f8e4c 100644 --- a/spec/services/system_notes/base_service_spec.rb +++ b/spec/services/system_notes/base_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe SystemNotes::BaseService do +RSpec.describe SystemNotes::BaseService do let(:noteable) { double } let(:project) { double } let(:author) { double } diff --git a/spec/services/system_notes/commit_service_spec.rb b/spec/services/system_notes/commit_service_spec.rb index 5839a17e4a0..bd6b3ec953a 100644 --- a/spec/services/system_notes/commit_service_spec.rb +++ b/spec/services/system_notes/commit_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe SystemNotes::CommitService do +RSpec.describe SystemNotes::CommitService do let_it_be(:group) { create(:group) } let_it_be(:project) { create(:project, :repository, group: group) } let_it_be(:author) { create(:user) } diff --git a/spec/services/system_notes/design_management_service_spec.rb b/spec/services/system_notes/design_management_service_spec.rb index 08511e62341..6267ad2aaad 100644 --- a/spec/services/system_notes/design_management_service_spec.rb +++ b/spec/services/system_notes/design_management_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe SystemNotes::DesignManagementService do +RSpec.describe SystemNotes::DesignManagementService do let(:project) { create(:project) } let(:issue) { create(:issue, project: project) } diff --git a/spec/services/system_notes/issuables_service_spec.rb b/spec/services/system_notes/issuables_service_spec.rb index c3b3c877583..1b5b26d90da 100644 --- a/spec/services/system_notes/issuables_service_spec.rb +++ b/spec/services/system_notes/issuables_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ::SystemNotes::IssuablesService do +RSpec.describe ::SystemNotes::IssuablesService do include ProjectForksHelper let_it_be(:group) { create(:group) } @@ -161,7 +161,9 @@ describe ::SystemNotes::IssuablesService do let(:status) { 'reopened' } let(:source) { nil } - it { is_expected.to be_nil } + it 'does not change note count' do + expect { subject }.not_to change { Note.count } + end end context 'with status reopened' do @@ -660,25 +662,67 @@ describe ::SystemNotes::IssuablesService do describe '#close_after_error_tracking_resolve' do subject { service.close_after_error_tracking_resolve } - it_behaves_like 'a system note' do - let(:action) { 'closed' } + context 'when state tracking is enabled' do + before do + stub_feature_flags(track_resource_state_change_events: true) + end + + it 'creates the expected state event' do + subject + + event = ResourceStateEvent.last + + expect(event.close_after_error_tracking_resolve).to eq(true) + expect(event.state).to eq('closed') + end end - it 'creates the expected system note' do - expect(subject.note) + context 'when state tracking is disabled' do + before do + stub_feature_flags(track_resource_state_change_events: false) + end + + it_behaves_like 'a system note' do + let(:action) { 'closed' } + end + + it 'creates the expected system note' do + expect(subject.note) .to eq('resolved the corresponding error and closed the issue.') + end end end describe '#auto_resolve_prometheus_alert' do subject { service.auto_resolve_prometheus_alert } - it_behaves_like 'a system note' do - let(:action) { 'closed' } + context 'when state tracking is enabled' do + before do + stub_feature_flags(track_resource_state_change_events: true) + end + + it 'creates the expected state event' do + subject + + event = ResourceStateEvent.last + + expect(event.close_auto_resolve_prometheus_alert).to eq(true) + expect(event.state).to eq('closed') + end end - it 'creates the expected system note' do - expect(subject.note).to eq('automatically closed this issue because the alert resolved.') + context 'when state tracking is disabled' do + before do + stub_feature_flags(track_resource_state_change_events: false) + end + + it_behaves_like 'a system note' do + let(:action) { 'closed' } + end + + it 'creates the expected system note' do + expect(subject.note).to eq('automatically closed this issue because the alert resolved.') + end end end end diff --git a/spec/services/system_notes/merge_requests_service_spec.rb b/spec/services/system_notes/merge_requests_service_spec.rb index 13d6367a585..067e1cef64d 100644 --- a/spec/services/system_notes/merge_requests_service_spec.rb +++ b/spec/services/system_notes/merge_requests_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ::SystemNotes::MergeRequestsService do +RSpec.describe ::SystemNotes::MergeRequestsService do include Gitlab::Routing let_it_be(:group) { create(:group) } @@ -52,8 +52,8 @@ describe ::SystemNotes::MergeRequestsService do end describe '.handle_merge_request_wip' do - context 'adding wip note' do - let(:noteable) { create(:merge_request, source_project: project, title: 'WIP Lorem ipsum') } + context 'adding draft note' do + let(:noteable) { create(:merge_request, source_project: project, title: 'Draft: Lorem ipsum') } subject { service.handle_merge_request_wip } @@ -261,4 +261,18 @@ describe ::SystemNotes::MergeRequestsService do expect(subject.commit_id).to eq(commit_sha) end end + + describe '#approve_mr' do + subject { described_class.new(noteable: noteable, project: project, author: author).approve_mr } + + it_behaves_like 'a system note' do + let(:action) { 'approved' } + end + + context 'when merge request approved' do + it 'sets the note text' do + expect(subject.note).to eq "approved this merge request" + end + end + end end diff --git a/spec/services/system_notes/time_tracking_service_spec.rb b/spec/services/system_notes/time_tracking_service_spec.rb index 7e3e6a75cdf..f671e66cdcd 100644 --- a/spec/services/system_notes/time_tracking_service_spec.rb +++ b/spec/services/system_notes/time_tracking_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ::SystemNotes::TimeTrackingService do +RSpec.describe ::SystemNotes::TimeTrackingService do let_it_be(:author) { create(:user) } let_it_be(:project) { create(:project, :repository) } diff --git a/spec/services/system_notes/zoom_service_spec.rb b/spec/services/system_notes/zoom_service_spec.rb index 435cdb5748e..986324c9664 100644 --- a/spec/services/system_notes/zoom_service_spec.rb +++ b/spec/services/system_notes/zoom_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ::SystemNotes::ZoomService do +RSpec.describe ::SystemNotes::ZoomService do let_it_be(:project) { create(:project, :repository) } let_it_be(:author) { create(:user) } |