diff --git a/app/controllers/kuroko2/api/job_definitions_controller.rb b/app/controllers/kuroko2/api/job_definitions_controller.rb index f6a0c918..50f54dd9 100644 --- a/app/controllers/kuroko2/api/job_definitions_controller.rb +++ b/app/controllers/kuroko2/api/job_definitions_controller.rb @@ -30,7 +30,7 @@ def create_resource end def require_resource - definition = Kuroko2::JobDefinition.includes(:tags, :job_schedules).find(params[:id]) + definition = Kuroko2::JobDefinition.includes(:tags, :job_schedules, :admins).find(params[:id]) @resource = Kuroko2::Api::JobDefinitionResource.new(definition) end diff --git a/app/models/kuroko2/api/job_definition_resource.rb b/app/models/kuroko2/api/job_definition_resource.rb index d7389a95..e36074e8 100644 --- a/app/models/kuroko2/api/job_definition_resource.rb +++ b/app/models/kuroko2/api/job_definition_resource.rb @@ -1,23 +1,30 @@ class Kuroko2::Api::JobDefinitionResource < Kuroko2::Api::ApplicationResource - property :id - - property :name - - property :description - - property :script - - property :tags - - property :cron + SIMPLE_PROPERTIES = [ + :id, + :name, + :description, + :script, + :tags, + :cron, + :notify_cancellation, + :suspended, + :prevent_multi, + :slack_channel, + ] + SIMPLE_PROPERTIES.each do |name| + property name + end + delegate *SIMPLE_PROPERTIES, :destroy, to: :model - def tags + property def tags model.tags.map(&:name) end - def cron + property def cron model.job_schedules.map(&:cron) end - delegate :id, :name, :description, :script, :destroy, to: :model + property def user_id + model.admins.map(&:id) + end end diff --git a/spec/factories/job_definition_factory.rb b/spec/factories/job_definition_factory.rb index 0027894a..0eecdeba 100644 --- a/spec/factories/job_definition_factory.rb +++ b/spec/factories/job_definition_factory.rb @@ -4,7 +4,7 @@ description { 'This is description for the job definition.' } script { "noop:\n" } admins { build_list(:user, 1) } - prevent_multi { false } + prevent_multi { Kuroko2::JobDefinition::PreventMultiStatus::WORKING_OR_ERROR } trait :with_revisions do transient do diff --git a/spec/requests/api/job_definitions_spec.rb b/spec/requests/api/job_definitions_spec.rb index 937c962c..7e4fd7f5 100644 --- a/spec/requests/api/job_definitions_spec.rb +++ b/spec/requests/api/job_definitions_spec.rb @@ -35,7 +35,12 @@ "description" => job_definition.description, "script" => job_definition.script, "tags" => [], - "cron"=>[], + "cron" => [], + "user_id" => [job_definition.admins[0].id], + "notify_cancellation" => true, + "suspended" => false, + "prevent_multi" => Kuroko2::JobDefinition::PreventMultiStatus::WORKING_OR_ERROR, + "slack_channel" => "", ) end end @@ -268,6 +273,11 @@ 'script' => definition.script, 'tags' => ['taggy-mc-tagface'], 'cron' => [schedule.cron], + 'user_id' => [definition.admins[0].id], + 'notify_cancellation' => true, + 'suspended' => false, + 'prevent_multi' => Kuroko2::JobDefinition::PreventMultiStatus::WORKING_OR_ERROR, + 'slack_channel' => '', } ) expect(response.status).to eq(200)