diff options
| -rw-r--r-- | app/models/chouette/route.rb | 13 | ||||
| -rw-r--r-- | app/models/clean_up.rb | 2 | ||||
| -rw-r--r-- | spec/models/clean_up_spec.rb | 5 |
3 files changed, 17 insertions, 3 deletions
diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb index 6a02203ad..00e5d27fa 100644 --- a/app/models/chouette/route.rb +++ b/app/models/chouette/route.rb @@ -34,6 +34,7 @@ module Chouette Chouette::Route.vehicle_journeys_timeless(proxy_association.owner.journey_patterns.pluck( :departure_stop_point_id)) end end + has_many :vehicle_journey_at_stops, through: :vehicle_journeys has_many :vehicle_journey_frequencies, :dependent => :destroy do # Todo : I think there is a better way to do this. def timeless @@ -92,6 +93,18 @@ module Chouette TomTom.enabled? } + def clean! + vehicle_journeys.find_each do |vj| + vj.vehicle_journey_at_stops.delete_all + end + vehicle_journeys.delete_all + journey_patterns.delete_all + stop_points.delete_all + routing_constraint_zones.delete_all + Chouette::Route.where(opposite_route_id: self.id).update_all(opposite_route_id: nil) + self.delete + end + def duplicate opposite=false overrides = { 'opposite_route_id' => nil, diff --git a/app/models/clean_up.rb b/app/models/clean_up.rb index 9cf2389c9..c9dc269ac 100644 --- a/app/models/clean_up.rb +++ b/app/models/clean_up.rb @@ -109,7 +109,7 @@ class CleanUp < ApplicationModel def destroy_routes_outside_referential line_ids = referential.metadatas.pluck(:line_ids).flatten.uniq - Chouette::Route.where(['line_id not in (?)', line_ids]).destroy_all + Chouette::Route.where(['line_id not in (?)', line_ids]).find_each &:clean! end def destroy_vehicle_journeys diff --git a/spec/models/clean_up_spec.rb b/spec/models/clean_up_spec.rb index f39ca2f2b..5848c1f77 100644 --- a/spec/models/clean_up_spec.rb +++ b/spec/models/clean_up_spec.rb @@ -273,8 +273,9 @@ RSpec.describe CleanUp, :type => :model do let(:cleaner) { create(:clean_up, referential: referential) } it "destroys routes not in the the referential" do - route = create(:route) - + route = create :route + opposite = create :route, line: route.line, opposite_route: route, wayback: route.opposite_wayback + cleaner.destroy_routes_outside_referential expect(Chouette::Route.exists?(route.id)).to be false |
