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 | 
