diff options
Diffstat (limited to 'spec/models/issue_spec.rb')
-rw-r--r-- | spec/models/issue_spec.rb | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb index a3e245f4def..23caf3647c3 100644 --- a/spec/models/issue_spec.rb +++ b/spec/models/issue_spec.rb @@ -85,18 +85,14 @@ RSpec.describe Issue do describe 'callbacks' do describe '#ensure_metrics' do it 'creates metrics after saving' do - issue = create(:issue, project: reusable_project) - - expect(issue.metrics).to be_persisted + expect(subject.metrics).to be_persisted expect(Issue::Metrics.count).to eq(1) end it 'does not create duplicate metrics for an issue' do - issue = create(:issue, project: reusable_project) + subject.close! - issue.close! - - expect(issue.metrics).to be_persisted + expect(subject.metrics).to be_persisted expect(Issue::Metrics.count).to eq(1) end @@ -105,6 +101,20 @@ RSpec.describe Issue do create(:issue, project: reusable_project) end + + context 'when metrics record is missing' do + before do + subject.metrics.delete + subject.reload + subject.metrics # make sure metrics association is cached (currently nil) + end + + it 'creates the metrics record' do + subject.update!(title: 'title') + + expect(subject.metrics).to be_present + end + end end describe '#record_create_action' do @@ -327,7 +337,7 @@ RSpec.describe Issue do end it 'returns true for a user that is the author of an issue' do - issue.update(author: user) + issue.update!(author: user) expect(issue.assignee_or_author?(user)).to be_truthy end @@ -665,7 +675,7 @@ RSpec.describe Issue do expect(user2.assigned_open_issues_count).to eq(0) issue.assignees = [user2] - issue.save + issue.save! expect(user1.assigned_open_issues_count).to eq(0) expect(user2.assigned_open_issues_count).to eq(1) @@ -897,7 +907,7 @@ RSpec.describe Issue do let(:private_project) { build(:project, :private)} before do - issue.update(project: private_project) # move issue to private project + issue.update!(project: private_project) # move issue to private project end shared_examples 'issue visible if user has guest access' do @@ -1034,7 +1044,7 @@ RSpec.describe Issue do with_them do it 'checks for spam on issues that can be seen anonymously' do project = reusable_project - project.update(visibility_level: visibility_level) + project.update!(visibility_level: visibility_level) issue = create(:issue, project: project, confidential: confidential, description: 'original description') issue.assign_attributes(new_attributes) @@ -1048,7 +1058,7 @@ RSpec.describe Issue do it 'refreshes the number of open issues of the project' do project = subject.project - expect { subject.destroy } + expect { subject.destroy! } .to change { project.open_issues_count }.from(1).to(0) end end @@ -1263,8 +1273,8 @@ RSpec.describe Issue do let_it_be(:issue) { create(:issue) } it 'returns a list of emails' do - participant1 = issue.issue_email_participants.create(email: 'a@gitlab.com') - participant2 = issue.issue_email_participants.create(email: 'b@gitlab.com') + participant1 = issue.issue_email_participants.create!(email: 'a@gitlab.com') + participant2 = issue.issue_email_participants.create!(email: 'b@gitlab.com') expect(issue.email_participants_emails).to contain_exactly(participant1.email, participant2.email) end |