diff options
| -rw-r--r-- | app/controllers/compliance_controls_controller.rb | 22 | ||||
| -rw-r--r-- | app/models/compliance_control.rb | 1 | ||||
| -rw-r--r-- | app/models/compliance_control_set.rb | 1 | ||||
| -rw-r--r-- | app/views/compliance_controls/edit.html.slim | 0 | ||||
| -rw-r--r-- | app/views/compliance_controls/index.html.slim | 0 | ||||
| -rw-r--r-- | app/views/compliance_controls/new.html.slim | 0 | ||||
| -rw-r--r-- | app/views/compliance_controls/show.html.slim | 0 | ||||
| -rw-r--r-- | config/routes.rb | 4 | ||||
| -rw-r--r-- | spec/controllers/compliance_controls_controller_spec.rb | 59 | ||||
| -rw-r--r-- | spec/factories/compliance_controls.rb | 4 | ||||
| -rw-r--r-- | spec/models/compliance_control_set_spec.rb | 1 | 
11 files changed, 90 insertions, 2 deletions
| diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb new file mode 100644 index 000000000..d198f2cdb --- /dev/null +++ b/app/controllers/compliance_controls_controller.rb @@ -0,0 +1,22 @@ +class ComplianceControlsController < BreadcrumbController +  defaults resource_class: ComplianceControl +  belongs_to :compliance_control_set + +  def create +    create!(notice: t('notice.compliance_control.created')) +  end + +  def update +    path = compliance_control_set_compliance_control_path(parent, resource) +    update!(notice: t('notice.compliance_control.updated')) { path } +  end + +  def destroy +    destroy!(notice: t('notice.compliance_control.destroyed')) +  end + +  private +  def compliance_control_params +    params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes) +  end +end diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 64556b524..685a00706 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -3,6 +3,7 @@ class ComplianceControl < ActiveRecord::Base    belongs_to :compliance_control_block    enum criticity: [:info, :warning, :error] +    validates :criticity, presence: true    validates :name, presence: true    validates :code, presence: true diff --git a/app/models/compliance_control_set.rb b/app/models/compliance_control_set.rb index 7801eb612..ca112531d 100644 --- a/app/models/compliance_control_set.rb +++ b/app/models/compliance_control_set.rb @@ -1,3 +1,4 @@  class ComplianceControlSet < ActiveRecord::Base    belongs_to :organisation +  has_many :compliance_controls  end diff --git a/app/views/compliance_controls/edit.html.slim b/app/views/compliance_controls/edit.html.slim new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/app/views/compliance_controls/edit.html.slim diff --git a/app/views/compliance_controls/index.html.slim b/app/views/compliance_controls/index.html.slim new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/app/views/compliance_controls/index.html.slim diff --git a/app/views/compliance_controls/new.html.slim b/app/views/compliance_controls/new.html.slim new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/app/views/compliance_controls/new.html.slim diff --git a/app/views/compliance_controls/show.html.slim b/app/views/compliance_controls/show.html.slim new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/app/views/compliance_controls/show.html.slim diff --git a/config/routes.rb b/config/routes.rb index 314f99888..97e0257c2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -71,6 +71,10 @@ ChouetteIhm::Application.routes.draw do    resources :api_keys, :only => [:edit, :update, :new, :create, :destroy] +  resources :compliance_control_sets do +    resources :compliance_controls +  end +    resources :stop_area_referentials, :only => [:show] do      post :sync, on: :member      resources :stop_areas diff --git a/spec/controllers/compliance_controls_controller_spec.rb b/spec/controllers/compliance_controls_controller_spec.rb new file mode 100644 index 000000000..165c00329 --- /dev/null +++ b/spec/controllers/compliance_controls_controller_spec.rb @@ -0,0 +1,59 @@ +require 'rails_helper' + +RSpec.describe ComplianceControlsController, type: :controller do +  login_user + +  let(:compliance_control)     { create :compliance_control } +  let(:compliance_control_set) { compliance_control.compliance_control_set } + +  describe "GET show" do +    it 'should be successful' do +      get :show, compliance_control_set_id: compliance_control_set.id, id: compliance_control.id +      expect(response).to be_success +    end +  end + +  describe "GET index" do +    it 'should be successful' do +      get :index, compliance_control_set_id: compliance_control_set.id +      expect(response).to be_success +    end +  end + +  describe 'GET #edit' do +    it 'should be successful' do +      get :edit, compliance_control_set_id: compliance_control_set.id, id: compliance_control.id +      expect(response).to be_success +    end +  end + +  describe 'GET #new' do +    it 'should be successful' do +      get :new, compliance_control_set_id: compliance_control_set.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: build(:compliance_control).as_json +      expect(response).to have_http_status(302) +      expect(flash[:notice]).to eq(I18n.t('notice.compliance_control.created')) +    end +  end + +  describe 'POST #update' do +    it 'should be successful' do +      post :update, compliance_control_set_id: compliance_control_set.id, id: compliance_control.id, compliance_control: compliance_control.as_json +      expect(response).to redirect_to compliance_control_set_compliance_control_path(compliance_control_set, compliance_control) +      expect(flash[:notice]).to eq(I18n.t('notice.compliance_control.updated')) +    end +  end + +  describe 'DELETE #destroy' do +    it 'should be successful' do +      delete :destroy, compliance_control_set_id: compliance_control_set.id, id: compliance_control.id +      expect(flash[:notice]).to eq I18n.t('notice.compliance_control.destroyed') +    end +  end +end diff --git a/spec/factories/compliance_controls.rb b/spec/factories/compliance_controls.rb index 28b760383..8aa16b674 100644 --- a/spec/factories/compliance_controls.rb +++ b/spec/factories/compliance_controls.rb @@ -1,8 +1,8 @@  FactoryGirl.define do    factory :compliance_control do      sequence(:name) { |n| "Compliance control #{n}" } -    type "Type" -    criticity :info +    type "ComplianceControl" +    criticity :warning      code "code"      comment "Text"      association :compliance_control_set diff --git a/spec/models/compliance_control_set_spec.rb b/spec/models/compliance_control_set_spec.rb index fb46bc65a..8ec57fdc0 100644 --- a/spec/models/compliance_control_set_spec.rb +++ b/spec/models/compliance_control_set_spec.rb @@ -6,4 +6,5 @@ RSpec.describe ComplianceControlSet, type: :model do    end    it { should belong_to :organisation } +  it { should have_many :compliance_controls }  end | 
