diff options
| author | Luc Donnet | 2017-09-29 10:05:56 +0200 |
|---|---|---|
| committer | Luc Donnet | 2017-09-29 10:05:56 +0200 |
| commit | 5e2e309809385d20b4611ab7b3fd4fc4658258ae (patch) | |
| tree | ec29420e2a41f14bb4a61b8433d47a987f6b516d | |
| parent | 02f4e2483751af82b0086a1800e761f37f244aa8 (diff) | |
| parent | f0970d2cdd852596f5bc2eaea94ca81fa93e0611 (diff) | |
| download | chouette-core-5e2e309809385d20b4611ab7b3fd4fc4658258ae.tar.bz2 | |
Merge branch 'master' of github.com:AF83/stif-boiv
22 files changed, 213 insertions, 24 deletions
diff --git a/app/controllers/compliance_control_blocks_controller.rb b/app/controllers/compliance_control_blocks_controller.rb new file mode 100644 index 000000000..2456eceba --- /dev/null +++ b/app/controllers/compliance_control_blocks_controller.rb @@ -0,0 +1,41 @@ +class ComplianceControlBlocksController < BreadcrumbController + defaults resource_class: ComplianceControlBlock + belongs_to :compliance_control_set + + def new + @compliance_control_set = parent + @compliance_control_block = ComplianceControlBlock.new(compliance_control_set: @compliance_control_set) + end + + def create + create! do |success, failure| + success.html { redirect_to compliance_control_set_path(@compliance_control_set) } + failure.html { render :action => :new } + end + end + + def update + update! do |success, failure| + success.html { redirect_to compliance_control_set_path(@compliance_control_set) } + failure.html { render :action => :edit } + end + end + + def destroy + destroy! do |format| + format.html { redirect_to compliance_control_set_path(@compliance_control_set) } + end + end + + private + + def create_resource compliance_control_block + compliance_control_block.transport_mode = params[:compliance_control_block][:transport_mode] + super + end + + def compliance_control_block_params + params.require(:compliance_control_block).permit(:transport_mode) + end + +end
\ No newline at end of file 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/models/compliance_check_resource.rb b/app/models/compliance_check_resource.rb index 7826f00c3..a5c0c7d27 100644 --- a/app/models/compliance_check_resource.rb +++ b/app/models/compliance_check_resource.rb @@ -1,5 +1,8 @@ class ComplianceCheckResource < ActiveRecord::Base extend Enumerize + belongs_to :compliance_check_set enumerize :status, in: %w[new successful warning failed] + + validates_presence_of :compliance_check_set end diff --git a/app/models/compliance_check_set.rb b/app/models/compliance_check_set.rb index 3c62221f0..f1f4a9f94 100644 --- a/app/models/compliance_check_set.rb +++ b/app/models/compliance_check_set.rb @@ -6,6 +6,8 @@ class ComplianceCheckSet < ActiveRecord::Base belongs_to :workbench belongs_to :parent, polymorphic: true + has_many :compliance_check_set + enumerize :status, in: %w[new pending successful warning failed running aborted canceled] scope :where_created_at_between, ->(start_date, end_date) do diff --git a/app/models/compliance_control_set.rb b/app/models/compliance_control_set.rb index f8f491cba..40e269146 100644 --- a/app/models/compliance_control_set.rb +++ b/app/models/compliance_control_set.rb @@ -1,5 +1,6 @@ class ComplianceControlSet < ActiveRecord::Base belongs_to :organisation + has_many :compliance_control_blocks, dependent: :destroy has_many :compliance_controls, dependent: :destroy validates :name, presence: true diff --git a/app/models/concerns/stif_netex_attributes_support.rb b/app/models/concerns/stif_netex_attributes_support.rb index 0d569b613..076acf491 100644 --- a/app/models/concerns/stif_netex_attributes_support.rb +++ b/app/models/concerns/stif_netex_attributes_support.rb @@ -49,7 +49,7 @@ module StifNetexAttributesSupport end def provider_id - self.referential.workbench.organisation.name.parameterize.underscore + self.referential.workbench.organisation.code.underscore.parameterize end def boiv_id diff --git a/app/views/compliance_control_blocks/_form.html.slim b/app/views/compliance_control_blocks/_form.html.slim new file mode 100644 index 000000000..b20b5d0cc --- /dev/null +++ b/app/views/compliance_control_blocks/_form.html.slim @@ -0,0 +1,9 @@ += simple_form_for [@compliance_control_set, @compliance_control_block], html: { class: 'form-horizontal', id: 'compliance_control_block_form' }, wrapper: :horizontal_form do |f| + .row + .col-lg-12 + = f.input :transport_mode, as: :select, collection: ComplianceControlBlock.transport_modes + / = f.input :sub_transport_mode + + .separator + + = f.button :submit, t('actions.submit'), class: 'btn btn-default formSubmitr', form: 'compliance_control_block_form' diff --git a/app/views/compliance_control_blocks/edit.html.slim b/app/views/compliance_control_blocks/edit.html.slim new file mode 100644 index 000000000..fbd42e7f3 --- /dev/null +++ b/app/views/compliance_control_blocks/edit.html.slim @@ -0,0 +1,11 @@ +/ PageHeader += pageheader 'modele-calendrier', + t('compliance_control_blocks.edit.title') + + +/ PageContent +.page_content + .container-fluid + .row + .col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1 + = render 'form'
\ No newline at end of file diff --git a/app/views/compliance_control_blocks/new.html.slim b/app/views/compliance_control_blocks/new.html.slim new file mode 100644 index 000000000..654a0dc7f --- /dev/null +++ b/app/views/compliance_control_blocks/new.html.slim @@ -0,0 +1,11 @@ +/ PageHeader += pageheader 'modele-calendrier', + t('compliance_control_blocks.new.title') + + +/ PageContent +.page_content + .container-fluid + .row + .col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1 + = render 'form'
\ No newline at end of file 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/locales/compliance_control_blocks.en.yml b/config/locales/compliance_control_blocks.en.yml new file mode 100644 index 000000000..8d5667df4 --- /dev/null +++ b/config/locales/compliance_control_blocks.en.yml @@ -0,0 +1,15 @@ +fr: + activerecord: + models: + compliance_control_blocks: Control blocks + attributes: + compliance_control_blocks: + transport_mode: Transport mode + sub_transport_mode: Transport submode + compliance_control_blocks: + actions: + destroy_confirm: Are you sure you want to destroy this block ? + new: + title: Create a control block + edit: + title: "Edit the control block : %{compliance_control_block}"
\ No newline at end of file diff --git a/config/locales/compliance_control_blocks.fr.yml b/config/locales/compliance_control_blocks.fr.yml new file mode 100644 index 000000000..beb2497b2 --- /dev/null +++ b/config/locales/compliance_control_blocks.fr.yml @@ -0,0 +1,15 @@ +fr: + activerecord: + models: + compliance_control_blocks: Groupes de contrôles + attributes: + compliance_control_blocks: + transport_mode: Mode de transport + sub_transport_mode: Sous-mode de transport + compliance_control_blocks: + actions: + destroy_confirm: Etes vous sûr de supprimer ce bloc ? + new: + title: Créer un groupe de contrôle(s) + edit: + title: "Editer le groupe de contrôle : %{compliance_control_block}"
\ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 9ee85d6e8..cc3896da9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -72,7 +72,10 @@ 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 + resources :compliance_control_blocks, :except => [:show, :index] end resources :stop_area_referentials, :only => [:show] do diff --git a/db/migrate/20170928144257_add_status_to_compliance_check_message.rb b/db/migrate/20170928144257_add_status_to_compliance_check_message.rb new file mode 100644 index 000000000..bb4101229 --- /dev/null +++ b/db/migrate/20170928144257_add_status_to_compliance_check_message.rb @@ -0,0 +1,5 @@ +class AddStatusToComplianceCheckMessage < ActiveRecord::Migration + def change + add_column :compliance_check_messages, :status, :string + end +end diff --git a/db/migrate/20170928144740_add_compliance_check_set_to_compliance_check_resource.rb b/db/migrate/20170928144740_add_compliance_check_set_to_compliance_check_resource.rb new file mode 100644 index 000000000..0abcc6ae4 --- /dev/null +++ b/db/migrate/20170928144740_add_compliance_check_set_to_compliance_check_resource.rb @@ -0,0 +1,5 @@ +class AddComplianceCheckSetToComplianceCheckResource < ActiveRecord::Migration + def change + add_reference :compliance_check_resources, :compliance_check_set, index: true, foreign_key: true + end +end diff --git a/lib/stif/permission_translator.rb b/lib/stif/permission_translator.rb index 095f726bd..121e89694 100644 --- a/lib/stif/permission_translator.rb +++ b/lib/stif/permission_translator.rb @@ -30,6 +30,7 @@ module Stif api_keys compliance_controls compliance_controls_sets + compliance_controls_blocks compliance_check_sets ] end diff --git a/spec/controllers/compliance_control_blocks_controller_spec.rb b/spec/controllers/compliance_control_blocks_controller_spec.rb new file mode 100644 index 000000000..54617e768 --- /dev/null +++ b/spec/controllers/compliance_control_blocks_controller_spec.rb @@ -0,0 +1,47 @@ +require 'rails_helper' + +RSpec.describe ComplianceControlBlocksController, type: :controller do + login_user + + + let(:compliance_control_block) { create(:compliance_control_block) } + let!(:compliance_control_set) { compliance_control_block.compliance_control_set } + let(:compliance_control_block_params) { compliance_control_block.as_json.merge(transport_mode: "bus") } + + describe 'GET #new' do + it 'should be successful' do + get :new, compliance_control_set_id: compliance_control_set.id, id: compliance_control_block.id + expect(response).to be_success + end + end + + describe 'POST #create' do + it 'should be successful' do + post :create, compliance_control_set_id: compliance_control_set.id, compliance_control_block: compliance_control_block_params + expect(response).to redirect_to compliance_control_set_path(compliance_control_set) + end + end + + describe 'GET #edit' do + it 'should be successful' do + get :edit, compliance_control_set_id: compliance_control_set.id, id: compliance_control_block.id + expect(response).to be_success + end + end + + describe 'POST #update' do + it 'should be successful' do + post :update, compliance_control_set_id: compliance_control_set.id, id: compliance_control_block.id, compliance_control_block: compliance_control_block_params + expect(response).to redirect_to compliance_control_set_path(compliance_control_set) + end + end + + describe 'DELETE #destroy' do + it 'should be successful' do + expect { + delete :destroy, compliance_control_set_id: compliance_control_set.id, id: compliance_control_block.id + }.to change(ComplianceControlBlock, :count).by(-1) + expect(response).to redirect_to compliance_control_set_path(compliance_control_set) + end + end +end 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 diff --git a/spec/factories/compliance_check_resources.rb b/spec/factories/compliance_check_resources.rb index 813153be2..95be48de4 100644 --- a/spec/factories/compliance_check_resources.rb +++ b/spec/factories/compliance_check_resources.rb @@ -2,5 +2,6 @@ FactoryGirl.define do factory :compliance_check_resource do status :new sequence(:name) { |n| "Compliance check resource #{n}" } + association :compliance_check_set end end diff --git a/spec/models/compliance_check_resource_spec.rb b/spec/models/compliance_check_resource_spec.rb index a9366bea2..40e209db0 100644 --- a/spec/models/compliance_check_resource_spec.rb +++ b/spec/models/compliance_check_resource_spec.rb @@ -4,4 +4,6 @@ RSpec.describe ComplianceCheckResource, type: :model do it 'should have a valid factory' do expect(FactoryGirl.build(:compliance_check_resource)).to be_valid end + + it { should validate_presence_of(:compliance_check_set) } end diff --git a/spec/support/permissions.rb b/spec/support/permissions.rb index 13666aca3..7d09e16cb 100644 --- a/spec/support/permissions.rb +++ b/spec/support/permissions.rb @@ -13,19 +13,22 @@ module Support def _permitted_resources %w[ - api_keys - access_points - connection_links - calendars - footnotes - imports - journey_patterns - referentials - routes - routing_constraint_zones - time_tables - vehicle_journeys - compliance_controls + access_points + connection_links + calendars + footnotes + imports + journey_patterns + referentials + routes + routing_constraint_zones + time_tables + vehicle_journeys + api_keys + compliance_controls + compliance_controls_sets + compliance_controls_blocks + compliance_check_sets ] end end |
