diff options
| -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 | 
