blob: 5cffba58d07c3301e5947fd342f946e27ab80141 (
plain)
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 | RSpec.describe ComplianceControl, type: :model do
  context 'dynamic attributes' do
    let(:compliance_control1) { build_stubbed :compliance_control }
    let(:compliance_control2) { build_stubbed :compliance_control, type: 'VehicleJouneyControl::TimeTable' }
    it 'should always return a array' do
       expect(compliance_control1.class.dynamic_attributes).to be_kind_of Array
       expect(compliance_control2.class.dynamic_attributes).to be_kind_of Array
    end
  end
  context 'standard validation' do
    let(:compliance_control) { build_stubbed :compliance_control }
    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' do
      expect( build :compliance_control, name: '' ).to_not be_valid
    end
    it { should validate_presence_of :code }
    it { should validate_presence_of :origin_code }
  end
  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
 |