diff options
| author | Robert | 2017-06-28 15:35:47 +0200 |
|---|---|---|
| committer | Robert | 2017-06-28 15:35:47 +0200 |
| commit | 5d5e806f25c74ed42bf9aba4950e069f2911e002 (patch) | |
| tree | 626fc5b16076fb509898623f7e58127073e42772 | |
| parent | fa5bf7d280662be42531c4f1ea2f458e9981f8fa (diff) | |
| parent | d704f6433672dbdddc1bdad9ed9bb48a61aaa00b (diff) | |
| download | chouette-core-5d5e806f25c74ed42bf9aba4950e069f2911e002.tar.bz2 | |
Merge branch 'master' of github.com:af83/stif-boiv
| -rw-r--r-- | app/models/clean_up.rb | 10 | ||||
| -rw-r--r-- | spec/factories/clean_ups.rb | 1 | ||||
| -rw-r--r-- | spec/models/clean_up_spec.rb | 27 |
3 files changed, 31 insertions, 7 deletions
diff --git a/app/models/clean_up.rb b/app/models/clean_up.rb index a791065aa..e39928a17 100644 --- a/app/models/clean_up.rb +++ b/app/models/clean_up.rb @@ -19,6 +19,7 @@ class CleanUp < ActiveRecord::Base result['time_table'] = send("destroy_time_tables_#{self.date_type}").try(:count) result['time_table_date'] = send("destroy_time_tables_dates_#{self.date_type}").try(:count) result['time_table_period'] = send("destroy_time_tables_periods_#{self.date_type}").try(:count) + result['vehicle_journey'] = destroy_vehicle_journey_without_time_table.try(:count) self.overlapping_periods.each do |period| exclude_dates_in_overlapping_period(period) end @@ -100,9 +101,16 @@ class CleanUp < ActiveRecord::Base end end + def destroy_vehicle_journey_without_time_table + Chouette::VehicleJourney.without_any_time_table.destroy_all + end + def destroy_time_tables(time_tables) + # Delete vehicle_journey time_table association time_tables.each do |time_table| - time_table.vehicle_journeys.map(&:destroy) + time_table.vehicle_journeys.each do |vj| + vj.time_tables.delete(time_table) + end end time_tables.destroy_all end diff --git a/spec/factories/clean_ups.rb b/spec/factories/clean_ups.rb index d3746c3b2..7107769ff 100644 --- a/spec/factories/clean_ups.rb +++ b/spec/factories/clean_ups.rb @@ -2,5 +2,6 @@ FactoryGirl.define do factory :clean_up do begin_date { Date.today} end_date { Date.today + 1.month } + date_type { :before } end end diff --git a/spec/models/clean_up_spec.rb b/spec/models/clean_up_spec.rb index 4b1bf4da9..ee88ca773 100644 --- a/spec/models/clean_up_spec.rb +++ b/spec/models/clean_up_spec.rb @@ -191,7 +191,7 @@ RSpec.describe CleanUp, :type => :model do context '#destroy_time_tables' do let!(:time_table) { create(:time_table) } - let(:cleaner) { create(:clean_up, date_type: :before) } + let(:cleaner) { create(:clean_up) } it 'should destroy all time_tables' do expect{cleaner.destroy_time_tables(Chouette::TimeTable.all)}.to change { @@ -199,11 +199,26 @@ RSpec.describe CleanUp, :type => :model do }.by(-1) end - it 'should destroy associated vehicle_journeys' do - create(:vehicle_journey, time_tables: [time_table]) - expect{cleaner.destroy_time_tables(Chouette::TimeTable.all)}.to change { - Chouette::VehicleJourney.count - }.by(-1) + it 'should destroy time_table vehicle_journey association' do + vj = create(:vehicle_journey, time_tables: [time_table]) + cleaner.destroy_time_tables(Chouette::TimeTable.all) + expect(vj.reload.time_tables).to be_empty + end + end + + context '#destroy_vehicle_journey_without_time_table' do + let(:cleaner) { create(:clean_up) } + + it 'should destroy vehicle_journey' do + vj = create(:vehicle_journey) + expect{cleaner.destroy_vehicle_journey_without_time_table + }.to change { Chouette::VehicleJourney.count }.by(-1) + end + + it 'should not destroy vehicle_journey with time_table' do + create(:vehicle_journey, time_tables: [create(:time_table)]) + expect{cleaner.destroy_vehicle_journey_without_time_table + }.to_not change { Chouette::VehicleJourney.count } end end |
