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:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-08-20 21:42:06 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-08-20 21:42:06 +0300
commit6e4e1050d9dba2b7b2523fdd1768823ab85feef4 (patch)
tree78be5963ec075d80116a932011d695dd33910b4e /spec/requests/api/issues
parent1ce776de4ae122aba3f349c02c17cebeaa8ecf07 (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.rb6
-rw-r--r--spec/requests/api/issues/get_project_issues_spec.rb9
-rw-r--r--spec/requests/api/issues/issues_spec.rb58
-rw-r--r--spec/requests/api/issues/post_projects_issues_spec.rb3
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