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 | 
