diff options
Diffstat (limited to 'spec/models/concerns/issuable_spec.rb')
-rw-r--r-- | spec/models/concerns/issuable_spec.rb | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/spec/models/concerns/issuable_spec.rb b/spec/models/concerns/issuable_spec.rb index 832d5b44e5d..e3c0e3a7a2b 100644 --- a/spec/models/concerns/issuable_spec.rb +++ b/spec/models/concerns/issuable_spec.rb @@ -18,7 +18,6 @@ RSpec.describe Issuable do it { is_expected.to have_many(:notes).dependent(:destroy) } it { is_expected.to have_many(:todos) } it { is_expected.to have_many(:labels) } - it { is_expected.to have_many(:note_authors).through(:notes) } context 'Notes' do let!(:note) { create(:note, noteable: issue, project: issue.project) } @@ -28,6 +27,23 @@ RSpec.describe Issuable do expect(issue.notes).not_to be_authors_loaded expect(scoped_issue.notes).to be_authors_loaded end + + describe 'note_authors' do + it { is_expected.to have_many(:note_authors).through(:notes) } + end + + describe 'user_note_authors' do + let_it_be(:system_user) { create(:user) } + + let!(:system_note) { create(:system_note, author: system_user, noteable: issue, project: issue.project) } + + it 'filters the authors to those of user notes' do + authors = issue.user_note_authors + + expect(authors).to include(note.author) + expect(authors).not_to include(system_user) + end + end end end @@ -572,6 +588,27 @@ RSpec.describe Issuable do issue.to_hook_data(user, old_associations: { severity: 'unknown' }) end end + + context 'escalation status is updated' do + let(:issue) { create(:incident, :with_escalation_status) } + let(:acknowledged) { IncidentManagement::IssuableEscalationStatus::STATUSES[:acknowledged] } + + before do + issue.escalation_status.update!(status: acknowledged) + + expect(Gitlab::HookData::IssuableBuilder).to receive(:new).with(issue).and_return(builder) + end + + it 'delegates to Gitlab::HookData::IssuableBuilder#build' do + expect(builder).to receive(:build).with( + user: user, + changes: hash_including( + 'escalation_status' => %i(triggered acknowledged) + )) + + issue.to_hook_data(user, old_associations: { escalation_status: :triggered }) + end + end end describe '#labels_array' do @@ -761,7 +798,7 @@ RSpec.describe Issuable do it 'updates issues updated_at' do issue - Timecop.travel(1.minute.from_now) do + travel_to(2.minutes.from_now) do expect { spend_time(1800) }.to change { issue.updated_at } end end @@ -786,7 +823,7 @@ RSpec.describe Issuable do context 'when time to subtract exceeds the total time spent' do it 'raise a validation error' do - Timecop.travel(1.minute.from_now) do + travel_to(1.minute.from_now) do expect do expect do spend_time(-3600) |