aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2017-06-30 11:49:21 +0200
committerXinhui2017-06-30 11:49:47 +0200
commit89d14a4813402d004d407d77fbd32846e367a7ac (patch)
tree4893233ad0f6286f02f96f9d8a10b4ec4a459395
parentb2375f9269721df64a0d103e3a979e98b24b979f (diff)
downloadchouette-core-89d14a4813402d004d407d77fbd32846e367a7ac.tar.bz2
Fix journey_pattern validate stop_points length
Refs #3931
-rw-r--r--app/models/chouette/journey_pattern.rb9
-rw-r--r--spec/models/chouette/journey_pattern_spec.rb5
2 files changed, 13 insertions, 1 deletions
diff --git a/app/models/chouette/journey_pattern.rb b/app/models/chouette/journey_pattern.rb
index a146dcff1..868d8121e 100644
--- a/app/models/chouette/journey_pattern.rb
+++ b/app/models/chouette/journey_pattern.rb
@@ -27,7 +27,7 @@ class Chouette::JourneyPattern < Chouette::TridentActiveRecord
jp = find_by(objectid: item['object_id']) || state_create_instance(route, item)
next if item['deletable'] && jp.persisted? && jp.destroy
# Update attributes and stop_points associations
- jp.update_attributes(state_permited_attributes(item))
+ jp.update_attributes(state_permited_attributes(item)) unless item['new_record']
jp.state_stop_points_update(item) if !jp.errors.any? && jp.persisted?
item['errors'] = jp.errors if jp.errors.any?
end
@@ -53,6 +53,13 @@ class Chouette::JourneyPattern < Chouette::TridentActiveRecord
def self.state_create_instance route, item
# Flag new record, so we can unset object_id if transaction rollback
jp = route.journey_patterns.create(state_permited_attributes(item))
+
+ # FIXME
+ # DefaultAttributesSupport will trigger some weird validation on after save
+ # wich will call to valid?, wich will populate errors
+ # In this case, we mark jp to be valid if persisted? return true
+ jp.errors.clear if jp.persisted?
+
item['object_id'] = jp.objectid
item['new_record'] = true
jp
diff --git a/spec/models/chouette/journey_pattern_spec.rb b/spec/models/chouette/journey_pattern_spec.rb
index aaf9a694f..6601ed5f4 100644
--- a/spec/models/chouette/journey_pattern_spec.rb
+++ b/spec/models/chouette/journey_pattern_spec.rb
@@ -20,6 +20,11 @@ describe Chouette::JourneyPattern, :type => :model do
expect(journey_pattern).to_not be_valid
expect(journey_pattern.errors).to have_key(:stop_points)
end
+
+ it 'should only validate on update' do
+ jp = build(:journey_pattern_common)
+ expect(jp).to be_valid
+ end
end
describe "state_update" do