Commit fd302061 authored by Shinya Maeda's avatar Shinya Maeda

Fix rubocop offences and rspec failures

parent df834306
...@@ -101,8 +101,8 @@ class PipelinesFinder ...@@ -101,8 +101,8 @@ class PipelinesFinder
def order_and_sort(items) def order_and_sort(items)
if params[:order_by].present? && params[:sort].present? && if params[:order_by].present? && params[:sort].present? &&
items.column_names.include?(params[:order_by]) && items.column_names.include?(params[:order_by]) &&
(params[:sort].downcase == 'asc' || params[:sort].downcase == 'desc') (params[:sort].casecmp('ASC') || params[:sort].casecmp('DESC'))
items.order("#{params[:order_by]} #{params[:sort]}") items.order("#{params[:order_by]} #{params[:sort]}")
else else
items.order(id: :desc) items.order(id: :desc)
......
...@@ -16,14 +16,14 @@ module API ...@@ -16,14 +16,14 @@ module API
use :pagination use :pagination
optional :scope, type: String, values: %w(running pending finished branches tags), optional :scope, type: String, values: %w(running pending finished branches tags),
desc: 'The scope of pipelines' desc: 'The scope of pipelines'
optional :status, type: String, values: ['running', 'pending', 'success', 'failed', 'canceled', 'skipped'], optional :status, type: String, values: %w(running pending success failed canceled skipped),
desc: 'The status of pipelines' desc: 'The status of pipelines'
optional :ref, type: String, desc: 'The ref of pipelines' optional :ref, type: String, desc: 'The ref of pipelines'
optional :yaml_errors, type: Boolean, desc: 'If true, Returns only yaml error pipelines' optional :yaml_errors, type: Boolean, desc: 'If true, Returns only yaml error pipelines'
optional :username, type: String, desc: 'The name of user who triggered pipelines' optional :username, type: String, desc: 'The name of user who triggered pipelines'
optional :order_by, type: String, values: ['id', 'status', 'ref', 'username', 'started_at', 'finished_at', 'created_at', 'updated_at'], default: 'id', optional :order_by, type: String, values: %w(id status ref username started_at finished_at created_at updated_at), default: 'id',
desc: 'The order_by which is combined with a sort' desc: 'The order_by which is combined with a sort'
optional :sort, type: String, values: ['asc', 'desc'], default: 'desc', optional :sort, type: String, values: %w(asc desc), default: 'desc',
desc: 'The sort method which is combined with an order_by' desc: 'The sort method which is combined with an order_by'
end end
get ':id/pipelines' do get ':id/pipelines' do
......
...@@ -34,16 +34,15 @@ describe PipelinesFinder do ...@@ -34,16 +34,15 @@ describe PipelinesFinder do
end end
it 'orders in descending order on ID' do it 'orders in descending order on ID' do
expected_ids = [ expected_ids = [tag_pipeline.id,
tag_pipeline.id, created_pipeline.id,
created_pipeline.id, pending_pipeline.id,
pending_pipeline.id, running_pipeline.id,
running_pipeline.id, success_pipeline.id,
success_pipeline.id, failed_pipeline.id,
failed_pipeline.id, canceled_pipeline.id,
canceled_pipeline.id, skipped_pipeline.id,
skipped_pipeline.id, yaml_errors_pipeline.id].sort.reverse
yaml_errors_pipeline.id].sort.reverse
expect(subject.map(&:id)).to eq expected_ids expect(subject.map(&:id)).to eq expected_ids
end end
end end
...@@ -214,21 +213,21 @@ describe PipelinesFinder do ...@@ -214,21 +213,21 @@ describe PipelinesFinder do
end end
context 'when a order_by and sort are passed' do context 'when a order_by and sort are passed' do
context 'when order by started_at asc' do context 'when order by created_at asc' do
let(:params) { { order_by: 'created_at', sort: 'asc' } } let(:params) { { order_by: 'created_at', sort: 'asc' } }
it 'sorts by started_at asc' do it 'sorts by created_at asc' do
expected_created_at = [ expect(subject.first).to eq(tag_pipeline)
tag_pipeline.created_at, expect(subject.last).to eq(yaml_errors_pipeline)
created_pipeline.created_at, end
pending_pipeline.created_at, end
running_pipeline.created_at,
success_pipeline.created_at, context 'when order by created_at desc' do
failed_pipeline.created_at, let(:params) { { order_by: 'created_at', sort: 'desc' } }
canceled_pipeline.created_at,
skipped_pipeline.created_at, it 'sorts by created_at desc' do
yaml_errors_pipeline.created_at].sort expect(subject.first).to eq(yaml_errors_pipeline)
expect(subject.map(&:created_at)).to eq expected_created_at expect(subject.last).to eq(tag_pipeline)
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment