diff options
| author | Xinhui | 2017-09-28 14:49:18 +0200 | 
|---|---|---|
| committer | Xinhui | 2017-09-28 14:54:26 +0200 | 
| commit | 9c64fa920c50683eb87debf8a10c223da9096b30 (patch) | |
| tree | 9185c388db612e046ff2f0ecb3fff37d90f04d65 | |
| parent | d4f93417331115d36880db771903446e6397a8bc (diff) | |
| download | chouette-core-9c64fa920c50683eb87debf8a10c223da9096b30.tar.bz2 | |
ComplianceControls#select_type action
| -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 | 
