aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2017-09-28 14:49:18 +0200
committerXinhui2017-09-28 14:54:26 +0200
commit9c64fa920c50683eb87debf8a10c223da9096b30 (patch)
tree9185c388db612e046ff2f0ecb3fff37d90f04d65
parentd4f93417331115d36880db771903446e6397a8bc (diff)
downloadchouette-core-9c64fa920c50683eb87debf8a10c223da9096b30.tar.bz2
ComplianceControls#select_type action
-rw-r--r--app/controllers/compliance_controls_controller.rb13
-rw-r--r--app/decorators/compliance_control_set_decorator.rb2
-rw-r--r--app/views/compliance_controls/select_type.html.slim8
-rw-r--r--config/routes.rb4
-rw-r--r--spec/controllers/compliance_controls_controller_spec.rb9
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