diff options
| author | Xinhui | 2017-09-14 16:09:11 +0200 |
|---|---|---|
| committer | Xinhui | 2017-09-14 16:09:16 +0200 |
| commit | 60ad22fa8db3c1f2cbfe532a73deca4b97232a25 (patch) | |
| tree | 7da523b538a520b624102dd349e16506efcdf8c3 | |
| parent | 6faaaaaf9136cebdbb7a65a13dbee5d72d15ea55 (diff) | |
| download | chouette-core-60ad22fa8db3c1f2cbfe532a73deca4b97232a25.tar.bz2 | |
ComplianceControl Controller4467_compliance_control_crud
Refs #4467
| -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-- | 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 |
10 files changed, 86 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/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 |
