diff options
| author | Robert Dober | 2017-10-09 16:57:57 +0200 |
|---|---|---|
| committer | GitHub | 2017-10-09 16:57:57 +0200 |
| commit | 0e0f0c802f30f073a8bfa05952f071af424f8d37 (patch) | |
| tree | 03c89d7f230c59f0cc2c6170dd9c4890fe88a151 /spec/models/compliance_control_spec.rb | |
| parent | e94f6f64a1c75cee5155b86c3d0fa51ac26ac96e (diff) | |
| parent | a8f97544fd048d50ef63dae1c74cff2de077152d (diff) | |
| download | chouette-core-0e0f0c802f30f073a8bfa05952f071af424f8d37.tar.bz2 | |
Merge pull request #84 from af83/4629-comp-check-set-creation
4629 comp check set creation *Mergeable*
Diffstat (limited to 'spec/models/compliance_control_spec.rb')
| -rw-r--r-- | spec/models/compliance_control_spec.rb | 76 |
1 files changed, 48 insertions, 28 deletions
diff --git a/spec/models/compliance_control_spec.rb b/spec/models/compliance_control_spec.rb index 50c2b7b8d..db73dab21 100644 --- a/spec/models/compliance_control_spec.rb +++ b/spec/models/compliance_control_spec.rb @@ -1,39 +1,59 @@ RSpec.describe ComplianceControl, type: :model do - let(:compliance_control) { create :compliance_control } + context 'standard validation' do - it 'should have a valid factory' do - expect(compliance_control).to be_valid - end + let(:compliance_control) { build_stubbed :compliance_control } - it { should belong_to :compliance_control_set } - it { should belong_to :compliance_control_block } + it 'should have a valid factory' do + expect(compliance_control).to be_valid + end - it 'should validate_presence_of criticity' do - compliance_control.criticity = nil - expect(compliance_control).not_to be_valid - end + it { should belong_to :compliance_control_set } + it { should belong_to :compliance_control_block } - it 'should validate_presence_of name' do - compliance_control.name = nil - expect(compliance_control).not_to be_valid - end - it 'should validate_presence_of code' do - compliance_control.code = nil - expect(compliance_control).not_to be_valid - end + it { should validate_presence_of :criticity } + it 'should validate_presence_of :name' do + expect( build :compliance_control, name: '' ).to_not be_valid + end + it { should validate_presence_of :code } + it { should validate_presence_of :origin_code } - it 'should validate_presence_of origin_code' do - compliance_control.origin_code = nil - expect(compliance_control).not_to be_valid end - #TODO dont know why the 'shortcuts' below to validates presence dont work - # That's why we dont it 'manually' - # it { should validate_presence_of :criticity } - # it { should validate_presence_of :name } - # it { should validate_presence_of :code } - # it { should validate_presence_of :origin_code } - + context 'validates that direct and indirect (via control_block) control_set are not different instances' do + + it 'not attached to control_block -> valid' do + compliance_control = create :compliance_control, compliance_control_block_id: nil + expect(compliance_control).to be_valid + end + + it 'attached to a control_block belonging to the same control_set -> valid' do + compliance_control_block = create :compliance_control_block + compliance_control = create :compliance_control, + compliance_control_block_id: compliance_control_block.id, + compliance_control_set_id: compliance_control_block.compliance_control_set.id # DO NOT change the last . to _ + # We need to be sure that is is not nil + expect(compliance_control).to be_valid + end + + it 'attached to a control_block **not** belonging to the same control_set -> invalid' do + compliance_control_block = create :compliance_control_block + compliance_control = build :compliance_control, + compliance_control_block_id: compliance_control_block.id, + compliance_control_set_id: create( :compliance_control_set ).id + expect(compliance_control).to_not be_valid + + direct_name = compliance_control.compliance_control_set.name + indirect_name = compliance_control_block.compliance_control_set.name + expected_message = "Le contrôle ne peut pas être associé à un jeu de contrôle (id: #{direct_name}) différent de celui de son groupe (id: #{indirect_name})" + + selected_error_message = + compliance_control + .errors + .messages[:coherent_control_set] + .first + expect( selected_error_message ).to eq(expected_message) + end + end end |
