aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/compliance_control.rb9
-rw-r--r--config/initializers/apartment.rb5
-rw-r--r--db/migrate/20170905123421_create_compliance_controls.rb16
-rw-r--r--db/schema.rb20
-rw-r--r--spec/factories/compliance_controls.rb11
-rw-r--r--spec/models/compliance_control_block_spec.rb2
-rw-r--r--spec/models/compliance_control_spec.rb14
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