diff options
| author | Xinhui | 2017-09-05 14:45:23 +0200 |
|---|---|---|
| committer | Xinhui | 2017-09-05 14:53:19 +0200 |
| commit | 37947deb6082d12ecfbce3bd7cbf18bc98762d41 (patch) | |
| tree | b723a26c06fd84afb7a434ab2b2a2b07cbe29c22 | |
| parent | a29e69ce157f3ac8cd7e59c894f51b46ab818c19 (diff) | |
| download | chouette-core-37947deb6082d12ecfbce3bd7cbf18bc98762d41.tar.bz2 | |
Model ComplianceControl
Refs #4385
| -rw-r--r-- | app/models/compliance_control.rb | 9 | ||||
| -rw-r--r-- | config/initializers/apartment.rb | 5 | ||||
| -rw-r--r-- | db/migrate/20170905123421_create_compliance_controls.rb | 16 | ||||
| -rw-r--r-- | db/schema.rb | 20 | ||||
| -rw-r--r-- | spec/factories/compliance_controls.rb | 11 | ||||
| -rw-r--r-- | spec/models/compliance_control_block_spec.rb | 2 | ||||
| -rw-r--r-- | spec/models/compliance_control_spec.rb | 14 |
7 files changed, 74 insertions, 3 deletions
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb new file mode 100644 index 000000000..64556b524 --- /dev/null +++ b/app/models/compliance_control.rb @@ -0,0 +1,9 @@ +class ComplianceControl < ActiveRecord::Base + belongs_to :compliance_control_set + belongs_to :compliance_control_block + + enum criticity: [:info, :warning, :error] + validates :criticity, presence: true + validates :name, presence: true + validates :code, presence: true +end diff --git a/config/initializers/apartment.rb b/config/initializers/apartment.rb index e1e86449c..8c8799b24 100644 --- a/config/initializers/apartment.rb +++ b/config/initializers/apartment.rb @@ -46,7 +46,10 @@ Apartment.configure do |config| 'NetexImport', 'WorkbenchImport', 'ImportMessage', - 'ImportResource' + 'ImportResource', + 'ComplianceControl', + 'ComplianceControlSet', + 'ComplianceControlBlock' ] # use postgres schemas? diff --git a/db/migrate/20170905123421_create_compliance_controls.rb b/db/migrate/20170905123421_create_compliance_controls.rb new file mode 100644 index 000000000..6b507bb8d --- /dev/null +++ b/db/migrate/20170905123421_create_compliance_controls.rb @@ -0,0 +1,16 @@ +class CreateComplianceControls < ActiveRecord::Migration + def change + create_table :compliance_controls do |t| + t.references :compliance_control_set, index: true, foreign_key: true + t.references :compliance_control_block, index: true, foreign_key: true + t.string :type + t.json :control_attributes + t.string :name + t.string :code + t.integer :criticity + t.text :comment + + t.timestamps null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb index c463a7f1a..df887f277 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170905122539) do +ActiveRecord::Schema.define(version: 20170905123421) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -164,6 +164,22 @@ ActiveRecord::Schema.define(version: 20170905122539) do add_index "compliance_control_sets", ["organisation_id"], name: "index_compliance_control_sets_on_organisation_id", using: :btree + create_table "compliance_controls", id: :bigserial, force: :cascade do |t| + t.integer "compliance_control_set_id" + t.integer "compliance_control_block_id" + t.string "type" + t.json "control_attributes" + t.string "name" + t.string "code" + t.integer "criticity" + t.text "comment" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "compliance_controls", ["compliance_control_block_id"], name: "index_compliance_controls_on_compliance_control_block_id", using: :btree + add_index "compliance_controls", ["compliance_control_set_id"], name: "index_compliance_controls_on_compliance_control_set_id", using: :btree + create_table "connection_links", id: :bigserial, force: :cascade do |t| t.integer "departure_id", limit: 8 t.integer "arrival_id", limit: 8 @@ -879,6 +895,8 @@ ActiveRecord::Schema.define(version: 20170905122539) do add_foreign_key "api_keys", "organisations" add_foreign_key "compliance_control_blocks", "compliance_control_sets" add_foreign_key "compliance_control_sets", "organisations" + add_foreign_key "compliance_controls", "compliance_control_blocks" + add_foreign_key "compliance_controls", "compliance_control_sets" add_foreign_key "group_of_lines_lines", "group_of_lines", name: "groupofline_group_fkey", on_delete: :cascade add_foreign_key "journey_frequencies", "timebands", on_delete: :nullify add_foreign_key "journey_frequencies", "vehicle_journeys", on_delete: :nullify diff --git a/spec/factories/compliance_controls.rb b/spec/factories/compliance_controls.rb new file mode 100644 index 000000000..865bfe376 --- /dev/null +++ b/spec/factories/compliance_controls.rb @@ -0,0 +1,11 @@ +FactoryGirl.define do + factory :compliance_control do + sequence(:name) { |n| "Compliance control #{n}" } + type "Type" + criticity :info + code "code" + comment "Text" + compliance_control_set + compliance_control_block + end +end diff --git a/spec/models/compliance_control_block_spec.rb b/spec/models/compliance_control_block_spec.rb index 836551a7c..248049b0c 100644 --- a/spec/models/compliance_control_block_spec.rb +++ b/spec/models/compliance_control_block_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' RSpec.describe ComplianceControlBlock, type: :model do it 'should have a valid factory' do - expect(FactoryGirl.build(:compliance_control_set)).to be_valid + expect(FactoryGirl.build(:compliance_control_block)).to be_valid end it { should belong_to :compliance_control_set } diff --git a/spec/models/compliance_control_spec.rb b/spec/models/compliance_control_spec.rb new file mode 100644 index 000000000..b00ff4c5a --- /dev/null +++ b/spec/models/compliance_control_spec.rb @@ -0,0 +1,14 @@ +require 'rails_helper' + +RSpec.describe ComplianceControl, type: :model do + it 'should have a valid factory' do + expect(FactoryGirl.build(:compliance_control)).to be_valid + end + + it { should belong_to :compliance_control_set } + it { should belong_to :compliance_control_block } + + it { should validate_presence_of :criticity } + it { should validate_presence_of :name } + it { should validate_presence_of :code } +end |
