diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-19 15:44:42 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-19 15:44:42 +0000 |
commit | 4555e1b21c365ed8303ffb7a3325d773c9b8bf31 (patch) | |
tree | 5423a1c7516cffe36384133ade12572cf709398d /spec/models/timelog_spec.rb | |
parent | e570267f2f6b326480d284e0164a6464ba4081bc (diff) | |
download | gitlab-ce-4555e1b21c365ed8303ffb7a3325d773c9b8bf31.tar.gz |
Add latest changes from gitlab-org/gitlab@13-12-stable-eev13.12.0-rc42
Diffstat (limited to 'spec/models/timelog_spec.rb')
-rw-r--r-- | spec/models/timelog_spec.rb | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/spec/models/timelog_spec.rb b/spec/models/timelog_spec.rb index 6a252b444f9..c3432907112 100644 --- a/spec/models/timelog_spec.rb +++ b/spec/models/timelog_spec.rb @@ -3,11 +3,12 @@ require 'spec_helper' RSpec.describe Timelog do - subject { build(:timelog) } + subject { create(:timelog) } - let(:issue) { create(:issue) } - let(:merge_request) { create(:merge_request) } + let_it_be(:issue) { create(:issue) } + let_it_be(:merge_request) { create(:merge_request) } + it { is_expected.to belong_to(:project) } it { is_expected.to belong_to(:issue).touch(true) } it { is_expected.to belong_to(:merge_request).touch(true) } @@ -16,6 +17,8 @@ RSpec.describe Timelog do it { is_expected.to validate_presence_of(:time_spent) } it { is_expected.to validate_presence_of(:user) } + it { expect(subject.project_id).not_to be_nil } + describe 'Issuable validation' do it 'is invalid if issue_id and merge_request_id are missing' do subject.attributes = { issue: nil, merge_request: nil } @@ -51,27 +54,34 @@ RSpec.describe Timelog do end describe 'scopes' do - describe 'for_issues_in_group' do - it 'return timelogs created for group issues' do - group = create(:group) - subgroup = create(:group, parent: group) - - create(:issue_timelog) - timelog1 = create(:issue_timelog, issue: create(:issue, project: create(:project, group: group))) - timelog2 = create(:issue_timelog, issue: create(:issue, project: create(:project, group: subgroup))) - - expect(described_class.for_issues_in_group(group)).to contain_exactly(timelog1, timelog2) + let_it_be(:group) { create(:group) } + let_it_be(:group_project) { create(:project, :empty_repo, group: group) } + let_it_be(:group_issue) { create(:issue, project: group_project) } + let_it_be(:group_merge_request) { create(:merge_request, source_project: group_project) } + + let_it_be(:subgroup) { create(:group, parent: group) } + let_it_be(:subgroup_project) { create(:project, :empty_repo, group: subgroup) } + let_it_be(:subgroup_issue) { create(:issue, project: subgroup_project) } + let_it_be(:subgroup_merge_request) { create(:merge_request, source_project: subgroup_project) } + + let_it_be(:timelog) { create(:issue_timelog, spent_at: 65.days.ago) } + let_it_be(:timelog1) { create(:issue_timelog, spent_at: 15.days.ago, issue: group_issue) } + let_it_be(:timelog2) { create(:issue_timelog, spent_at: 5.days.ago, issue: subgroup_issue) } + let_it_be(:timelog3) { create(:merge_request_timelog, spent_at: 65.days.ago) } + let_it_be(:timelog4) { create(:merge_request_timelog, spent_at: 15.days.ago, merge_request: group_merge_request) } + let_it_be(:timelog5) { create(:merge_request_timelog, spent_at: 5.days.ago, merge_request: subgroup_merge_request) } + + describe 'in_group' do + it 'return timelogs created for group issues and merge requests' do + expect(described_class.in_group(group)).to contain_exactly(timelog1, timelog2, timelog4, timelog5) end end describe 'between_times' do it 'returns collection of timelogs within given times' do - create(:issue_timelog, spent_at: 65.days.ago) - timelog1 = create(:issue_timelog, spent_at: 15.days.ago) - timelog2 = create(:issue_timelog, spent_at: 5.days.ago) - timelogs = described_class.between_times(20.days.ago, 1.day.ago) + timelogs = described_class.between_times(20.days.ago, 10.days.ago) - expect(timelogs).to contain_exactly(timelog1, timelog2) + expect(timelogs).to contain_exactly(timelog1, timelog4) end end end |