diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-20 21:42:06 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-20 21:42:06 +0300 |
commit | 6e4e1050d9dba2b7b2523fdd1768823ab85feef4 (patch) | |
tree | 78be5963ec075d80116a932011d695dd33910b4e /spec/requests/api/issues | |
parent | 1ce776de4ae122aba3f349c02c17cebeaa8ecf07 (diff) |
Add latest changes from gitlab-org/gitlab@13-3-stable-ee
Diffstat (limited to 'spec/requests/api/issues')
-rw-r--r-- | spec/requests/api/issues/get_group_issues_spec.rb | 6 | ||||
-rw-r--r-- | spec/requests/api/issues/get_project_issues_spec.rb | 9 | ||||
-rw-r--r-- | spec/requests/api/issues/issues_spec.rb | 58 | ||||
-rw-r--r-- | spec/requests/api/issues/post_projects_issues_spec.rb | 3 |
4 files changed, 75 insertions, 1 deletions
diff --git a/spec/requests/api/issues/get_group_issues_spec.rb b/spec/requests/api/issues/get_group_issues_spec.rb index b53fac3679d..b0fbf3bf66d 100644 --- a/spec/requests/api/issues/get_group_issues_spec.rb +++ b/spec/requests/api/issues/get_group_issues_spec.rb @@ -36,6 +36,7 @@ RSpec.describe API::Issues do updated_at: 3.hours.ago, created_at: 1.day.ago end + let!(:group_confidential_issue) do create :issue, :confidential, @@ -45,6 +46,7 @@ RSpec.describe API::Issues do updated_at: 2.hours.ago, created_at: 2.days.ago end + let!(:group_issue) do create :issue, author: user, @@ -56,14 +58,17 @@ RSpec.describe API::Issues do description: issue_description, created_at: 5.days.ago end + let!(:group_label) do create(:label, title: 'group_lbl', color: '#FFAABB', project: group_project) end + let!(:group_label_link) { create(:label_link, label: group_label, target: group_issue) } let!(:group_milestone) { create(:milestone, title: '3.0.0', project: group_project) } let!(:group_empty_milestone) do create(:milestone, title: '4.0.0', project: group_project) end + let!(:group_note) { create(:note_on_issue, author: user, project: group_project, noteable: group_issue) } let(:base_url) { "/groups/#{group.id}/issues" } @@ -246,6 +251,7 @@ RSpec.describe API::Issues do target_project: private_mrs_project, description: "closes #{group_issue.to_reference(private_mrs_project)}") end + let!(:merge_request2) do create(:merge_request, :simple, diff --git a/spec/requests/api/issues/get_project_issues_spec.rb b/spec/requests/api/issues/get_project_issues_spec.rb index 7ff07bf580d..4228ca2d5fd 100644 --- a/spec/requests/api/issues/get_project_issues_spec.rb +++ b/spec/requests/api/issues/get_project_issues_spec.rb @@ -28,6 +28,7 @@ RSpec.describe API::Issues do updated_at: 3.hours.ago, closed_at: 1.hour.ago end + let!(:confidential_issue) do create :issue, :confidential, @@ -37,6 +38,7 @@ RSpec.describe API::Issues do created_at: generate(:past_time), updated_at: 2.hours.ago end + let!(:issue) do create :issue, author: user, @@ -48,6 +50,7 @@ RSpec.describe API::Issues do title: issue_title, description: issue_description end + let_it_be(:label) do create(:label, title: 'label', color: '#FFAABB', project: project) end @@ -69,6 +72,7 @@ RSpec.describe API::Issues do target_project: project, description: "closes #{issue.to_reference}") end + let!(:merge_request2) do create(:merge_request, :simple, @@ -180,12 +184,15 @@ RSpec.describe API::Issues do it 'avoids N+1 queries' do get api("/projects/#{project.id}/issues", user) - create_list(:issue, 3, project: project) + create_list(:issue, 3, project: project, closed_by: user) control_count = ActiveRecord::QueryRecorder.new(skip_cached: false) do get api("/projects/#{project.id}/issues", user) end.count + milestone = create(:milestone, project: project) + create(:issue, project: project, milestone: milestone, closed_by: create(:user)) + expect do get api("/projects/#{project.id}/issues", user) end.not_to exceed_all_query_limit(control_count) diff --git a/spec/requests/api/issues/issues_spec.rb b/spec/requests/api/issues/issues_spec.rb index 519bea22501..b638a65d65e 100644 --- a/spec/requests/api/issues/issues_spec.rb +++ b/spec/requests/api/issues/issues_spec.rb @@ -28,6 +28,7 @@ RSpec.describe API::Issues do updated_at: 3.hours.ago, closed_at: 1.hour.ago end + let!(:confidential_issue) do create :issue, :confidential, @@ -37,6 +38,7 @@ RSpec.describe API::Issues do created_at: generate(:past_time), updated_at: 2.hours.ago end + let!(:issue) do create :issue, author: user, @@ -48,6 +50,7 @@ RSpec.describe API::Issues do title: issue_title, description: issue_description end + let_it_be(:label) do create(:label, title: 'label', color: '#FFAABB', project: project) end @@ -384,6 +387,60 @@ RSpec.describe API::Issues do end end + context 'filtering by due date' do + # This date chosen because it is the beginning of a week + near the beginning of a month + let_it_be(:frozen_time) { DateTime.parse('2020-08-03 12:00') } + + let_it_be(:issue2) { create(:issue, project: project, author: user, due_date: frozen_time + 3.days) } + let_it_be(:issue3) { create(:issue, project: project, author: user, due_date: frozen_time + 10.days) } + let_it_be(:issue4) { create(:issue, project: project, author: user, due_date: frozen_time + 34.days) } + let_it_be(:issue5) { create(:issue, project: project, author: user, due_date: frozen_time - 8.days) } + + before do + travel_to(frozen_time) + end + + after do + travel_back + end + + it 'returns them all when argument is empty' do + get api('/issues?due_date=', user) + + expect_paginated_array_response(issue5.id, issue4.id, issue3.id, issue2.id, issue.id, closed_issue.id) + end + + it 'returns issues without due date' do + get api('/issues?due_date=0', user) + + expect_paginated_array_response(issue.id, closed_issue.id) + end + + it 'returns issues due for this week' do + get api('/issues?due_date=week', user) + + expect_paginated_array_response(issue2.id) + end + + it 'returns issues due for this month' do + get api('/issues?due_date=month', user) + + expect_paginated_array_response(issue3.id, issue2.id) + end + + it 'returns issues that are due previous two weeks and next month' do + get api('/issues?due_date=next_month_and_previous_two_weeks', user) + + expect_paginated_array_response(issue5.id, issue4.id, issue3.id, issue2.id) + end + + it 'returns issues that are overdue' do + get api('/issues?due_date=overdue', user) + + expect_paginated_array_response(issue5.id) + end + end + context 'filter by labels or label_name param' do context 'N+1' do let(:label_b) { create(:label, title: 'foo', project: project) } @@ -807,6 +864,7 @@ RSpec.describe API::Issues do target_project: private_mrs_project, description: "closes #{issue.to_reference(private_mrs_project)}") end + let!(:merge_request2) do create(:merge_request, :simple, diff --git a/spec/requests/api/issues/post_projects_issues_spec.rb b/spec/requests/api/issues/post_projects_issues_spec.rb index e2f1bb2cd1a..a7fe4d4509a 100644 --- a/spec/requests/api/issues/post_projects_issues_spec.rb +++ b/spec/requests/api/issues/post_projects_issues_spec.rb @@ -27,6 +27,7 @@ RSpec.describe API::Issues do updated_at: 3.hours.ago, closed_at: 1.hour.ago end + let!(:confidential_issue) do create :issue, :confidential, @@ -36,6 +37,7 @@ RSpec.describe API::Issues do created_at: generate(:past_time), updated_at: 2.hours.ago end + let!(:issue) do create :issue, author: user, @@ -47,6 +49,7 @@ RSpec.describe API::Issues do title: issue_title, description: issue_description end + let_it_be(:label) do create(:label, title: 'label', color: '#FFAABB', project: project) end |