summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorsujay patel <sujaypatel1996@gmail.com>2019-06-13 01:33:21 +0530
committersujay <sujay.patel@caavo.com>2019-07-05 14:24:56 +0530
commite241c89977c32fabbbe5a49c1ba69564d5e09e31 (patch)
treee95ac3a41d7937b0451cda82930668f1d7eaf3fa /spec
parentb71250ca0f1b9df4f728bdb322502e3544058ca5 (diff)
downloadgitlab-ce-e241c89977c32fabbbe5a49c1ba69564d5e09e31.tar.gz
Adding order by to list runner jobs api.
Diffstat (limited to 'spec')
-rw-r--r--spec/finders/runner_jobs_finder_spec.rb35
-rw-r--r--spec/requests/api/runners_spec.rb44
2 files changed, 54 insertions, 25 deletions
diff --git a/spec/finders/runner_jobs_finder_spec.rb b/spec/finders/runner_jobs_finder_spec.rb
index 9ed6f50ddfb..01f45a37ba8 100644
--- a/spec/finders/runner_jobs_finder_spec.rb
+++ b/spec/finders/runner_jobs_finder_spec.rb
@@ -37,38 +37,23 @@ describe RunnerJobsFinder do
end
context 'when order_by and sort are specified' do
- context 'when order_by created_at' do
- let(:params) { { order_by: 'created_at', sort: 'asc' } }
- let!(:jobs) { Array.new(2) { create(:ci_build, runner: runner, project: project, user: create(:user)) } }
-
- it 'sorts as created_at: :asc' do
- is_expected.to match_array(jobs)
- end
-
- context 'when sort is invalid' do
- let(:params) { { order_by: 'created_at', sort: 'invalid_sort' } }
-
- it 'sorts as created_at: :desc' do
- is_expected.to eq(jobs.sort_by { |p| -p.user.id })
- end
- end
- end
-
- context 'when order_by is invalid' do
- let(:params) { { order_by: 'invalid_column', sort: 'asc' } }
- let!(:jobs) { Array.new(2) { create(:ci_build, runner: runner, project: project, user: create(:user)) } }
+ context 'when order_by id and sort is asc' do
+ let(:params) { { order_by: 'id', sort: 'asc' } }
+ let!(:jobs) { create_list(:ci_build, 2, runner: runner, project: project, user: create(:user)) }
it 'sorts as id: :asc' do
- is_expected.to eq(jobs.sort_by { |p| p.id })
+ is_expected.to eq(jobs.sort_by(&:id))
end
end
+ end
- context 'when both are nil' do
- let(:params) { { order_by: nil, sort: nil } }
- let!(:jobs) { Array.new(2) { create(:ci_build, runner: runner, project: project, user: create(:user)) } }
+ context 'when order_by is specified and sort is not specified' do
+ context 'when order_by id and sort is not specified' do
+ let(:params) { { order_by: 'id' } }
+ let!(:jobs) { create_list(:ci_build, 2, runner: runner, project: project, user: create(:user)) }
it 'sorts as id: :desc' do
- is_expected.to eq(jobs.sort_by { |p| -p.id })
+ is_expected.to eq(jobs.sort_by(&:id).reverse)
end
end
end
diff --git a/spec/requests/api/runners_spec.rb b/spec/requests/api/runners_spec.rb
index 5548e3fd01a..f5ce3a3570e 100644
--- a/spec/requests/api/runners_spec.rb
+++ b/spec/requests/api/runners_spec.rb
@@ -584,6 +584,34 @@ describe API::Runners do
end
end
+ context 'when valid order_by is provided' do
+ context 'when sort order is not specified' do
+ it 'return jobs in descending order' do
+ get api("/runners/#{project_runner.id}/jobs?order_by=id", admin)
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(response).to include_pagination_headers
+
+ expect(json_response).to be_an(Array)
+ expect(json_response.length).to eq(2)
+ expect(json_response.first).to include('id' => job_5.id)
+ end
+ end
+
+ context 'when sort order is specified as asc' do
+ it 'return jobs sorted in ascending order' do
+ get api("/runners/#{project_runner.id}/jobs?order_by=id&sort=asc", admin)
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(response).to include_pagination_headers
+
+ expect(json_response).to be_an(Array)
+ expect(json_response.length).to eq(2)
+ expect(json_response.first).to include('id' => job_4.id)
+ end
+ end
+ end
+
context 'when invalid status is provided' do
it 'return 400' do
get api("/runners/#{project_runner.id}/jobs?status=non-existing", admin)
@@ -591,6 +619,22 @@ describe API::Runners do
expect(response).to have_gitlab_http_status(400)
end
end
+
+ context 'when invalid order_by is provided' do
+ it 'return 400' do
+ get api("/runners/#{project_runner.id}/jobs?order_by=non-existing", admin)
+
+ expect(response).to have_gitlab_http_status(400)
+ end
+ end
+
+ context 'when invalid sort is provided' do
+ it 'return 400' do
+ get api("/runners/#{project_runner.id}/jobs?sort=non-existing", admin)
+
+ expect(response).to have_gitlab_http_status(400)
+ end
+ end
end
context "when runner doesn't exist" do