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
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-04-29 03:09:38 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-04-29 03:09:38 +0300
commitac6a319712d345ab54d4eb5be1a0a4116823dd1e (patch)
treeadb0a00d5876d35635e7ba87a9f63bfa16e2ba44 /spec
parentabe11a6a2c04112d0b7d6d4facfd0c8370f51831 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/graphql/resolvers/issues_resolver_spec.rb38
-rw-r--r--spec/graphql/types/issue_sort_enum_spec.rb4
-rw-r--r--spec/models/application_setting_spec.rb8
-rw-r--r--spec/requests/api/graphql/project/issues_spec.rb94
-rw-r--r--spec/requests/api/settings_spec.rb4
5 files changed, 123 insertions, 25 deletions
diff --git a/spec/graphql/resolvers/issues_resolver_spec.rb b/spec/graphql/resolvers/issues_resolver_spec.rb
index 3dd4bb31e94..bb975a629a0 100644
--- a/spec/graphql/resolvers/issues_resolver_spec.rb
+++ b/spec/graphql/resolvers/issues_resolver_spec.rb
@@ -126,7 +126,6 @@ describe Resolvers::IssuesResolver do
context 'when sorting by due date' do
let_it_be(:project) { create(:project) }
-
let_it_be(:due_issue1) { create(:issue, project: project, due_date: 3.days.from_now) }
let_it_be(:due_issue2) { create(:issue, project: project, due_date: nil) }
let_it_be(:due_issue3) { create(:issue, project: project, due_date: 2.days.ago) }
@@ -143,7 +142,6 @@ describe Resolvers::IssuesResolver do
context 'when sorting by relative position' do
let_it_be(:project) { create(:project) }
-
let_it_be(:relative_issue1) { create(:issue, project: project, relative_position: 2000) }
let_it_be(:relative_issue2) { create(:issue, project: project, relative_position: nil) }
let_it_be(:relative_issue3) { create(:issue, project: project, relative_position: 1000) }
@@ -156,22 +154,40 @@ describe Resolvers::IssuesResolver do
context 'when sorting by priority' do
let_it_be(:project) { create(:project) }
-
let_it_be(:early_milestone) { create(:milestone, project: project, due_date: 10.days.from_now) }
let_it_be(:late_milestone) { create(:milestone, project: project, due_date: 30.days.from_now) }
- let_it_be(:label_1) { create(:label, project: project, priority: 1) }
- let_it_be(:label_2) { create(:label, project: project, priority: 5) }
- let_it_be(:issue1) { create(:issue, project: project, labels: [label_1], milestone: late_milestone) }
- let_it_be(:issue2) { create(:issue, project: project, labels: [label_2]) }
- let_it_be(:issue3) { create(:issue, project: project, milestone: early_milestone) }
- let_it_be(:issue4) { create(:issue, project: project) }
+ let_it_be(:priority_label1) { create(:label, project: project, priority: 1) }
+ let_it_be(:priority_label2) { create(:label, project: project, priority: 5) }
+ let_it_be(:priority_issue1) { create(:issue, project: project, labels: [priority_label1], milestone: late_milestone) }
+ let_it_be(:priority_issue2) { create(:issue, project: project, labels: [priority_label2]) }
+ let_it_be(:priority_issue3) { create(:issue, project: project, milestone: early_milestone) }
+ let_it_be(:priority_issue4) { create(:issue, project: project) }
+
+ it 'sorts issues ascending' do
+ expect(resolve_issues(sort: :priority_asc).items).to eq([priority_issue3, priority_issue1, priority_issue2, priority_issue4])
+ end
+
+ it 'sorts issues descending' do
+ expect(resolve_issues(sort: :priority_desc).items).to eq([priority_issue1, priority_issue3, priority_issue2, priority_issue4])
+ end
+ end
+
+ context 'when sorting by label priority' do
+ let_it_be(:project) { create(:project) }
+ let_it_be(:label1) { create(:label, project: project, priority: 1) }
+ let_it_be(:label2) { create(:label, project: project, priority: 5) }
+ let_it_be(:label3) { create(:label, project: project, priority: 10) }
+ let_it_be(:label_issue1) { create(:issue, project: project, labels: [label1]) }
+ let_it_be(:label_issue2) { create(:issue, project: project, labels: [label2]) }
+ let_it_be(:label_issue3) { create(:issue, project: project, labels: [label1, label3]) }
+ let_it_be(:label_issue4) { create(:issue, project: project) }
it 'sorts issues ascending' do
- expect(resolve_issues(sort: :priority_asc).items).to eq([issue3, issue1, issue2, issue4])
+ expect(resolve_issues(sort: :label_priority_asc).items).to eq([label_issue3, label_issue1, label_issue2, label_issue4])
end
it 'sorts issues descending' do
- expect(resolve_issues(sort: :priority_desc).items).to eq([issue1, issue3, issue2, issue4])
+ expect(resolve_issues(sort: :label_priority_desc).items).to eq([label_issue2, label_issue3, label_issue1, label_issue4])
end
end
end
diff --git a/spec/graphql/types/issue_sort_enum_spec.rb b/spec/graphql/types/issue_sort_enum_spec.rb
index 1b6aa6d6069..433b94ac3c0 100644
--- a/spec/graphql/types/issue_sort_enum_spec.rb
+++ b/spec/graphql/types/issue_sort_enum_spec.rb
@@ -8,6 +8,8 @@ describe GitlabSchema.types['IssueSort'] do
it_behaves_like 'common sort values'
it 'exposes all the existing issue sort values' do
- expect(described_class.values.keys).to include(*%w[DUE_DATE_ASC DUE_DATE_DESC RELATIVE_POSITION_ASC])
+ expect(described_class.values.keys).to include(
+ *%w[DUE_DATE_ASC DUE_DATE_DESC RELATIVE_POSITION_ASC LABEL_PRIORITY_ASC LABEL_PRIORITY_DESC]
+ )
end
end
diff --git a/spec/models/application_setting_spec.rb b/spec/models/application_setting_spec.rb
index 3b2ed979cef..c552f8e1c42 100644
--- a/spec/models/application_setting_spec.rb
+++ b/spec/models/application_setting_spec.rb
@@ -94,6 +94,14 @@ describe ApplicationSetting do
it { is_expected.to allow_value(300).for(:issues_create_limit) }
it { is_expected.not_to allow_value('three').for(:issues_create_limit) }
it { is_expected.not_to allow_value(nil).for(:issues_create_limit) }
+ it { is_expected.not_to allow_value(10.5).for(:issues_create_limit) }
+ it { is_expected.not_to allow_value(-1).for(:issues_create_limit) }
+
+ it { is_expected.to allow_value(0).for(:raw_blob_request_limit) }
+ it { is_expected.not_to allow_value('abc').for(:raw_blob_request_limit) }
+ it { is_expected.not_to allow_value(nil).for(:raw_blob_request_limit) }
+ it { is_expected.not_to allow_value(10.5).for(:raw_blob_request_limit) }
+ it { is_expected.not_to allow_value(-1).for(:raw_blob_request_limit) }
context 'grafana_url validations' do
before do
diff --git a/spec/requests/api/graphql/project/issues_spec.rb b/spec/requests/api/graphql/project/issues_spec.rb
index ae21951008c..cb751f786a8 100644
--- a/spec/requests/api/graphql/project/issues_spec.rb
+++ b/spec/requests/api/graphql/project/issues_spec.rb
@@ -252,12 +252,12 @@ describe 'getting an issue list for a project' do
let_it_be(:early_milestone) { create(:milestone, project: sort_project, due_date: 10.days.from_now) }
let_it_be(:late_milestone) { create(:milestone, project: sort_project, due_date: 30.days.from_now) }
- let_it_be(:label_1) { create(:label, project: sort_project, priority: 1) }
- let_it_be(:label_2) { create(:label, project: sort_project, priority: 5) }
- let_it_be(:issue1) { create(:issue, project: sort_project, labels: [label_1], milestone: late_milestone) }
- let_it_be(:issue2) { create(:issue, project: sort_project, labels: [label_2]) }
- let_it_be(:issue3) { create(:issue, project: sort_project, milestone: early_milestone) }
- let_it_be(:issue4) { create(:issue, project: sort_project) }
+ let_it_be(:priority_label1) { create(:label, project: sort_project, priority: 1) }
+ let_it_be(:priority_label2) { create(:label, project: sort_project, priority: 5) }
+ let_it_be(:priority_issue1) { create(:issue, project: sort_project, labels: [priority_label1], milestone: late_milestone) }
+ let_it_be(:priority_issue2) { create(:issue, project: sort_project, labels: [priority_label2]) }
+ let_it_be(:priority_issue3) { create(:issue, project: sort_project, milestone: early_milestone) }
+ let_it_be(:priority_issue4) { create(:issue, project: sort_project) }
let_it_be(:params) { 'sort: PRIORITY_ASC' }
@@ -277,20 +277,20 @@ describe 'getting an issue list for a project' do
context 'when ascending' do
it 'sorts issues' do
- expect(grab_iids).to eq([issue3.iid, issue1.iid, issue2.iid, issue4.iid])
+ expect(grab_iids).to eq([priority_issue3.iid, priority_issue1.iid, priority_issue2.iid, priority_issue4.iid])
end
context 'when paginating' do
let(:params) { 'sort: PRIORITY_ASC, first: 2' }
it 'sorts issues' do
- expect(grab_iids).to eq([issue3.iid, issue1.iid])
+ expect(grab_iids).to eq([priority_issue3.iid, priority_issue1.iid])
cursored_query = query("sort: PRIORITY_ASC, after: \"#{end_cursor}\"")
post_graphql(cursored_query, current_user: current_user)
response_data = JSON.parse(response.body)['data']['project']['issues']['edges']
- expect(grab_iids(response_data)).to eq([issue2.iid, issue4.iid])
+ expect(grab_iids(response_data)).to eq([priority_issue2.iid, priority_issue4.iid])
end
end
end
@@ -299,20 +299,90 @@ describe 'getting an issue list for a project' do
let(:params) { 'sort: PRIORITY_DESC' }
it 'sorts issues' do
- expect(grab_iids).to eq([issue1.iid, issue3.iid, issue2.iid, issue4.iid])
+ expect(grab_iids).to eq([priority_issue1.iid, priority_issue3.iid, priority_issue2.iid, priority_issue4.iid])
end
context 'when paginating' do
let(:params) { 'sort: PRIORITY_DESC, first: 2' }
it 'sorts issues' do
- expect(grab_iids).to eq([issue1.iid, issue3.iid])
+ expect(grab_iids).to eq([priority_issue1.iid, priority_issue3.iid])
cursored_query = query("sort: PRIORITY_DESC, after: \"#{end_cursor}\"")
post_graphql(cursored_query, current_user: current_user)
response_data = JSON.parse(response.body)['data']['project']['issues']['edges']
- expect(grab_iids(response_data)).to eq([issue2.iid, issue4.iid])
+ expect(grab_iids(response_data)).to eq([priority_issue2.iid, priority_issue4.iid])
+ end
+ end
+ end
+ end
+
+ context 'when sorting by label priority' do
+ let_it_be(:sort_project) { create(:project, :public) }
+
+ let_it_be(:label1) { create(:label, project: sort_project, priority: 1) }
+ let_it_be(:label2) { create(:label, project: sort_project, priority: 5) }
+ let_it_be(:label3) { create(:label, project: sort_project, priority: 10) }
+ let_it_be(:label_issue1) { create(:issue, project: sort_project, labels: [label1]) }
+ let_it_be(:label_issue2) { create(:issue, project: sort_project, labels: [label2]) }
+ let_it_be(:label_issue3) { create(:issue, project: sort_project, labels: [label1, label3]) }
+ let_it_be(:label_issue4) { create(:issue, project: sort_project) }
+
+ let_it_be(:params) { 'sort: LABEL_PRIORITY_ASC' }
+
+ def query(issue_params = params)
+ graphql_query_for(
+ 'project',
+ { 'fullPath' => sort_project.full_path },
+ "issues(#{issue_params}) { pageInfo { endCursor} edges { node { iid dueDate } } }"
+ )
+ end
+
+ before do
+ post_graphql(query, current_user: current_user)
+ end
+
+ it_behaves_like 'a working graphql query'
+
+ context 'when ascending' do
+ it 'sorts issues' do
+ expect(grab_iids).to eq [label_issue3.iid, label_issue1.iid, label_issue2.iid, label_issue4.iid]
+ end
+
+ context 'when paginating' do
+ let(:params) { 'sort: LABEL_PRIORITY_ASC, first: 2' }
+
+ it 'sorts issues' do
+ expect(grab_iids).to eq [label_issue3.iid, label_issue1.iid]
+
+ cursored_query = query("sort: LABEL_PRIORITY_ASC, after: \"#{end_cursor}\"")
+ post_graphql(cursored_query, current_user: current_user)
+ response_data = JSON.parse(response.body)['data']['project']['issues']['edges']
+
+ expect(grab_iids(response_data)).to eq [label_issue2.iid, label_issue4.iid]
+ end
+ end
+ end
+
+ context 'when descending' do
+ let(:params) { 'sort: LABEL_PRIORITY_DESC' }
+
+ it 'sorts issues' do
+ expect(grab_iids).to eq [label_issue2.iid, label_issue3.iid, label_issue1.iid, label_issue4.iid]
+ end
+
+ context 'when paginating' do
+ let(:params) { 'sort: LABEL_PRIORITY_DESC, first: 2' }
+
+ it 'sorts issues' do
+ expect(grab_iids).to eq [label_issue2.iid, label_issue3.iid]
+
+ cursored_query = query("sort: LABEL_PRIORITY_DESC, after: \"#{end_cursor}\"")
+ post_graphql(cursored_query, current_user: current_user)
+ response_data = JSON.parse(response.body)['data']['project']['issues']['edges']
+
+ expect(grab_iids(response_data)).to eq [label_issue1.iid, label_issue4.iid]
end
end
end
diff --git a/spec/requests/api/settings_spec.rb b/spec/requests/api/settings_spec.rb
index 07e7a48d8c4..b071a5435a8 100644
--- a/spec/requests/api/settings_spec.rb
+++ b/spec/requests/api/settings_spec.rb
@@ -89,7 +89,8 @@ describe API::Settings, 'Settings' do
push_event_hooks_limit: 2,
push_event_activities_limit: 2,
snippet_size_limit: 5,
- issues_create_limit: 300
+ issues_create_limit: 300,
+ raw_blob_request_limit: 300
}
expect(response).to have_gitlab_http_status(:ok)
@@ -127,6 +128,7 @@ describe API::Settings, 'Settings' do
expect(json_response['push_event_activities_limit']).to eq(2)
expect(json_response['snippet_size_limit']).to eq(5)
expect(json_response['issues_create_limit']).to eq(300)
+ expect(json_response['raw_blob_request_limit']).to eq(300)
end
end