aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuc Donnet2018-01-11 13:50:09 +0100
committerLuc Donnet2018-01-11 13:50:33 +0100
commit41135059b9e9b1649b9001a512a0cb9c3e370127 (patch)
tree021380c07fab04da82a3b5ce92fbb589967eebb6
parent40546b58557a939ceb6f60c1dfc8ff14444e9d20 (diff)
downloadchouette-core-41135059b9e9b1649b9001a512a0cb9c3e370127.tar.bz2
Fix vehicle_journey_control for min max values Refs #5543 @2
-rw-r--r--config/locales/compliance_controls.fr.yml2
-rw-r--r--spec/factories/compliance_controls/vehicle_journey_control_factories.rb2
-rw-r--r--spec/support/shared_examples/compliance_control_validation.rb45
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