diff options
3 files changed, 26 insertions, 23 deletions
| diff --git a/config/locales/compliance_controls.fr.yml b/config/locales/compliance_controls.fr.yml index 220f0dc48..1448cdbc8 100644 --- a/config/locales/compliance_controls.fr.yml +++ b/config/locales/compliance_controls.fr.yml @@ -14,7 +14,7 @@ fr:          routing_constraint_zone: 'ITL'          vehicle_journey: 'Course'      search_no_results: 'Aucun contrôle ne correspond à votre recherche' -    min_max_values: "la valeur de minimum (%{min}) ne doit pas être superieur à la valuer du maximum (%{max})" +    min_max_values: "la valeur minimum (%{min}) ne doit pas être supérieure à la valeur maximum (%{max})"      errors:        incoherent_control_sets: "Le contrôle ne peut pas être associé à un jeu de contrôle (id: %{direct_set_name}) différent de celui de son groupe (id: %{indirect_set_name})"        mandatory_control_type: "Un type de contrôle doit être sélectionné" diff --git a/spec/factories/compliance_controls/vehicle_journey_control_factories.rb b/spec/factories/compliance_controls/vehicle_journey_control_factories.rb index b9da530fb..e8f68cbdf 100644 --- a/spec/factories/compliance_controls/vehicle_journey_control_factories.rb +++ b/spec/factories/compliance_controls/vehicle_journey_control_factories.rb @@ -10,6 +10,8 @@ FactoryGirl.define do    factory :vehicle_journey_control_speed, class: 'VehicleJourneyControl::Speed' do      association :compliance_control_set +    minimum 200 +    maximum 300    end    factory :vehicle_journey_control_time_table, class: 'VehicleJourneyControl::TimeTable' do diff --git a/spec/support/shared_examples/compliance_control_validation.rb b/spec/support/shared_examples/compliance_control_validation.rb index c76712c4c..b23c2984f 100644 --- a/spec/support/shared_examples/compliance_control_validation.rb +++ b/spec/support/shared_examples/compliance_control_validation.rb @@ -4,43 +4,44 @@ RSpec.shared_examples_for 'has min_max_values' do      it { should validate_numericality_of(:minimum) }      it { should validate_numericality_of(:maximum) } -    it 'if no value is provided' do +    it 'if maximum is greater than minimum' do +      min = random_int +      max = min + 100 +      subject.assign_attributes maximum: max, minimum: min        expect_it.to be_valid      end +  end + +  context "is invalid" do +    it 'if no value is provided' do +      subject.minimum = nil +      subject.maximum = nil +      expect_it.not_to be_valid +    end +      it 'if minimum is provided alone' do        subject.minimum = 42 -      expect_it.to be_valid +      subject.maximum = nil +      expect_it.not_to be_valid      end +      it 'if maximum is provided alone' do +      subject.minimum = nil        subject.maximum = 42 -      expect_it.to be_valid -    end - -    it 'if maximum is not smaller than minimum' do -      100.times do -        min = random_int -        max = min + random_int(20) -        subject.assign_attributes maximum: max, minimum: min -        subject.assign_attributes maximum: min, minimum: min -        expect_it.to be_valid -      end +      expect_it.not_to be_valid      end -  end -  context "is invalid" do      it 'if maximum is smaller than minimum' do -      100.times do -        min = random_int -        max = min - random_int(20) - 1 -        subject.assign_attributes maximum: max, minimum: min -        expect_it.not_to be_valid -      end +      min = random_int +      max = min - 1 +      subject.assign_attributes maximum: max, minimum: min +      expect_it.not_to be_valid      end      it 'and has a correct error message' do        subject.assign_attributes maximum: 1, minimum: 2        expect_it.not_to be_valid -        expect( subject.errors.messages[:min_max_values].first ).to match("la valeur de minimum (2) ne doit pas être superieur à la valuer du maximum (1)") +      expect( subject.errors.messages[:minimum].first ).to match(I18n.t("compliance_controls.min_max_values", min: 2, max: 1))      end    end  end | 
