Commit 63ca126e authored by Shinya Maeda's avatar Shinya Maeda

Improve API with optinal and default. Allow to use scope as a parameter.

parent b17c8d67
...@@ -13,11 +13,15 @@ module API ...@@ -13,11 +13,15 @@ module API
end end
params do params do
use :pagination use :pagination
optional :scope, type: String, values: %w[active inactive],
desc: 'The scope of pipeline schedules'
end end
get ':id/pipeline_schedules' do get ':id/pipeline_schedules' do
authorize! :read_pipeline_schedule, user_project authorize! :read_pipeline_schedule, user_project
present paginate(pipeline_schedules), with: Entities::PipelineSchedule schedules = PipelineSchedulesFinder.new(user_project).execute(scope: params[:scope])
.preload([:owner, :last_pipeline])
present paginate(schedules), with: Entities::PipelineSchedule
end end
desc 'Get a single pipeline schedule' do desc 'Get a single pipeline schedule' do
...@@ -41,8 +45,8 @@ module API ...@@ -41,8 +45,8 @@ module API
requires :description, type: String, desc: 'The description of pipeline schedule' requires :description, type: String, desc: 'The description of pipeline schedule'
requires :ref, type: String, desc: 'The branch/tag name will be triggered' requires :ref, type: String, desc: 'The branch/tag name will be triggered'
requires :cron, type: String, desc: 'The cron' requires :cron, type: String, desc: 'The cron'
requires :cron_timezone, type: String, desc: 'The timezone' optional :cron_timezone, type: String, default: 'UTC', desc: 'The timezone'
requires :active, type: Boolean, desc: 'The activation of pipeline schedule' optional :active, type: Boolean, default: true, desc: 'The activation of pipeline schedule'
end end
post ':id/pipeline_schedules' do post ':id/pipeline_schedules' do
authorize! :create_pipeline_schedule, user_project authorize! :create_pipeline_schedule, user_project
......
...@@ -43,6 +43,24 @@ describe API::PipelineSchedules do ...@@ -43,6 +43,24 @@ describe API::PipelineSchedules do
get api("/projects/#{project.id}/pipeline_schedules", developer) get api("/projects/#{project.id}/pipeline_schedules", developer)
end.not_to exceed_query_limit(control_count) end.not_to exceed_query_limit(control_count)
end end
%w[active inactive].each do |target|
context "when scope is #{target}" do
before do
create(:ci_pipeline_schedule, project: project, active: active?(target))
end
it 'returns matched pipeline schedules' do
get api("/projects/#{project.id}/pipeline_schedules", developer), scope: target
expect(json_response.map{ |r| r['active'] }).to all(eq(active?(target)))
end
end
def active?(str)
(str == 'active') ? true : false
end
end
end end
context 'authenticated user with invalid permissions' do context 'authenticated user with invalid permissions' do
......
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