Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/timelog_spec.rb')
-rw-r--r--spec/models/timelog_spec.rb46
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