diff options
| -rw-r--r-- | app/controllers/compliance_controls_controller.rb | 13 | ||||
| -rw-r--r-- | app/decorators/compliance_control_set_decorator.rb | 2 | ||||
| -rw-r--r-- | app/views/compliance_controls/select_type.html.slim | 8 | ||||
| -rw-r--r-- | config/routes.rb | 4 | ||||
| -rw-r--r-- | spec/controllers/compliance_controls_controller_spec.rb | 9 |
5 files changed, 26 insertions, 10 deletions
diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index 846dbb253..be8b773e2 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -2,15 +2,14 @@ class ComplianceControlsController < BreadcrumbController defaults resource_class: ComplianceControl belongs_to :compliance_control_set - def new - @compliance_control_set = parent - @compliance_control = GenericAttributeControl::MinMax.new - @compliance_control.build_compliance_control_block + def select_type + @sti_subclasses = ComplianceControl.subclasses end - def update - path = compliance_control_set_compliance_control_path(parent, resource) - update!(notice: t('notice.compliance_control.updated')) { path } + def new + redirect_to(action: :select_type) unless params[:sti_class] + @compliance_control_set = parent + @compliance_control = params[:sti_class].constantize.new end private diff --git a/app/decorators/compliance_control_set_decorator.rb b/app/decorators/compliance_control_set_decorator.rb index f9e4de836..6a9040358 100644 --- a/app/decorators/compliance_control_set_decorator.rb +++ b/app/decorators/compliance_control_set_decorator.rb @@ -23,7 +23,7 @@ class ComplianceControlSetDecorator < Draper::Decorator # if h.policy(ComplianceControl).create? links << Link.new( content: h.t('compliance_control_sets.actions.add_compliance_control'), - href: h.new_compliance_control_set_compliance_control_path(object.id) + href: h.select_type_compliance_control_set_compliance_controls_path(object.id) ) # end links diff --git a/app/views/compliance_controls/select_type.html.slim b/app/views/compliance_controls/select_type.html.slim new file mode 100644 index 000000000..66a38279d --- /dev/null +++ b/app/views/compliance_controls/select_type.html.slim @@ -0,0 +1,8 @@ += form_tag(new_compliance_control_set_compliance_control_path, method: :get) do + - @sti_subclasses.each do |klass| + = radio_button_tag(:sti_class, klass) + = label_tag(:sti_class, klass) + end + = submit_tag("suivant") +end + diff --git a/config/routes.rb b/config/routes.rb index 9ee85d6e8..88dd5a4bc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -72,7 +72,9 @@ ChouetteIhm::Application.routes.draw do resources :api_keys, :only => [:edit, :update, :new, :create, :destroy] resources :compliance_control_sets do - resources :compliance_controls, except: :index + resources :compliance_controls, except: :index do + get :select_type, on: :collection + end end resources :stop_area_referentials, :only => [:show] do diff --git a/spec/controllers/compliance_controls_controller_spec.rb b/spec/controllers/compliance_controls_controller_spec.rb index a39408ccb..d8368c3d0 100644 --- a/spec/controllers/compliance_controls_controller_spec.rb +++ b/spec/controllers/compliance_controls_controller_spec.rb @@ -24,7 +24,14 @@ RSpec.describe ComplianceControlsController, type: :controller do describe 'GET #new' do it 'should be successful' do - get :new, compliance_control_set_id: compliance_control_set.id + get :new, compliance_control_set_id: compliance_control_set.id, sti_class: 'GenericAttributeControl::MinMax' + expect(response).to be_success + end + end + + describe 'GET #select_type' do + it 'should be successful' do + get :select_type, compliance_control_set_id: compliance_control_set.id expect(response).to be_success end end |
