diff options
| -rw-r--r-- | app/models/compliance_control.rb | 2 | ||||
| -rw-r--r-- | db/migrate/20171016074044_set_code_uiqueness_in_compliance_control.rb | 5 | ||||
| -rw-r--r-- | db/schema.rb | 3 | ||||
| -rw-r--r-- | spec/lib/compliance_control_set_copier_spec.rb | 6 |
4 files changed, 11 insertions, 5 deletions
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index bfbc075c6..baf491e8a 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -8,7 +8,7 @@ class ComplianceControl < ActiveRecord::Base validates :criticity, presence: true validates :name, presence: true - validates :code, presence: true + validates :code, presence: true, uniqueness: { scope: :compliance_control_set } validates :origin_code, presence: true validates :compliance_control_set, presence: true diff --git a/db/migrate/20171016074044_set_code_uiqueness_in_compliance_control.rb b/db/migrate/20171016074044_set_code_uiqueness_in_compliance_control.rb new file mode 100644 index 000000000..be43dbcf5 --- /dev/null +++ b/db/migrate/20171016074044_set_code_uiqueness_in_compliance_control.rb @@ -0,0 +1,5 @@ +class SetCodeUiquenessInComplianceControl < ActiveRecord::Migration + def change + add_index :compliance_controls, [:code, :compliance_control_set_id], unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 38ed0d807..181c83402 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: 20171010202716) do +ActiveRecord::Schema.define(version: 20171016074044) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -256,6 +256,7 @@ ActiveRecord::Schema.define(version: 20171010202716) do t.integer "compliance_control_block_id" end + add_index "compliance_controls", ["code", "compliance_control_set_id"], name: "index_compliance_controls_on_code_and_compliance_control_set_id", unique: true, using: :btree 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 diff --git a/spec/lib/compliance_control_set_copier_spec.rb b/spec/lib/compliance_control_set_copier_spec.rb index 3cecc44d1..a9e576cf7 100644 --- a/spec/lib/compliance_control_set_copier_spec.rb +++ b/spec/lib/compliance_control_set_copier_spec.rb @@ -26,7 +26,7 @@ RSpec.describe ComplianceControlSetCopier do 3.times.map{ |_| create :compliance_control_block, compliance_control_set: cc_set } } let!(:direct_ccs){ - 3.times.map{ |n| create :compliance_control, compliance_control_set: cc_set, name: "direct #{n.succ}" } + 3.times.map{ |n| create :compliance_control, compliance_control_set: cc_set, name: "direct #{n.succ}", code: "direct-#{n.succ}" } } # Needed to check we do not dulicate a node (compliance_control) twice let!(:indirect_ccs){ @@ -36,7 +36,7 @@ RSpec.describe ComplianceControlSetCopier do cc.update compliance_control_block_id: cc_block.id end cc_blox.each_with_index.map{ | cc_block, n | - create(:compliance_control, compliance_control_set: cc_set, compliance_control_block: cc_block, name: "indirect #{n.succ}") + create(:compliance_control, compliance_control_set: cc_set, compliance_control_block: cc_block, name: "indirect #{n.succ}", code: "indirect-#{n.succ}") } } @@ -94,7 +94,7 @@ RSpec.describe ComplianceControlSetCopier do # Control/Check att_names = %w{ control_attributes code criticity comment origin_code } expected = control.attributes.values_at(*att_names) << mk_name(control.name) - actual = cck.attributes.values_at(*(att_names << 'name')) + actual = cck.attributes.values_at(*(att_names << 'name')) expect( actual ).to eq( expected ) |
