aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/chouette/route.rb13
-rw-r--r--app/models/clean_up.rb2
-rw-r--r--spec/models/clean_up_spec.rb5
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