diff options
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/features/stop_areas_spec.rb | 12 | ||||
| -rw-r--r-- | spec/features/users/user_edit_spec.rb | 4 | ||||
| -rw-r--r-- | spec/models/chouette/vehicle_journey_spec.rb | 10 | ||||
| -rw-r--r-- | spec/models/clean_up_spec.rb | 64 | ||||
| -rw-r--r-- | spec/models/merge_spec.rb | 21 | ||||
| -rw-r--r-- | spec/models/route_spec.rb | 5 | 
6 files changed, 104 insertions, 12 deletions
| diff --git a/spec/features/stop_areas_spec.rb b/spec/features/stop_areas_spec.rb index 52040f070..3a47f826f 100644 --- a/spec/features/stop_areas_spec.rb +++ b/spec/features/stop_areas_spec.rb @@ -43,30 +43,30 @@ describe "StopAreas", :type => :feature do          describe 'updated stop areas in before block' do            it 'supports displaying only stop areas in creation' do -            find("#q_status_in_creation").set(true) +            find("#q_by_status_in_creation").set(true)              click_button 'search-btn'              expect(page).not_to have_content(stop_areas.first.name)              expect(page).not_to have_content(stop_areas.last.name)            end            it 'supports displaying only confirmed stop areas' do -            find("#q_status_confirmed").set(true) +            find("#q_by_status_confirmed").set(true)              click_button 'search-btn'              expect(page).to have_content(stop_areas.first.name)              expect(page).not_to have_content(stop_areas.last.name)            end            it 'supports displaying only deactivated stop areas' do -            find("#q_status_deactivated").set(true) +            find("#q_by_status_deactivated").set(true)              click_button 'search-btn'              expect(page).not_to have_content(stop_areas.first.name)              expect(page).to have_content(stop_areas.last.name)            end            it 'should display all stop areas if all filters are checked' do -            find("#q_status_in_creation").set(true) -            find("#q_status_confirmed").set(true) -            find("#q_status_deactivated").set(true) +            find("#q_by_status_in_creation").set(true) +            find("#q_by_status_confirmed").set(true) +            find("#q_by_status_deactivated").set(true)              click_button 'search-btn'              expect(page).to have_content(stop_areas.first.name)              expect(page).to have_content(stop_areas.last.name) diff --git a/spec/features/users/user_edit_spec.rb b/spec/features/users/user_edit_spec.rb index 14995d8e5..020a4bc57 100644 --- a/spec/features/users/user_edit_spec.rb +++ b/spec/features/users/user_edit_spec.rb @@ -40,8 +40,8 @@ feature 'User edit', :devise do      other = FactoryGirl.create(:user, email: 'other@example.com')      login_as(me, :scope => :user)      visit edit_user_registration_path(other) -    expect(page).to have_content 'Votre Profil' -    expect(page).to have_field('Email', with: me.email) +    expect(page).to have_content I18n.t('devise.registrations.edit.title') +    expect(page).to have_field(I18n.t('simple_form.labels.user.email'), with: me.email)    end  end diff --git a/spec/models/chouette/vehicle_journey_spec.rb b/spec/models/chouette/vehicle_journey_spec.rb index 0fc75bec9..05560f9e3 100644 --- a/spec/models/chouette/vehicle_journey_spec.rb +++ b/spec/models/chouette/vehicle_journey_spec.rb @@ -36,6 +36,16 @@ describe Chouette::VehicleJourney, :type => :model do        expect{create(:vehicle_journey_at_stop, vehicle_journey: vehicle_journey)}.to change{vehicle_journey.checksum}      end +    it "changes when a vjas is deleted" do +      vehicle_journey = create(:vehicle_journey) +      3.times do +        create(:vehicle_journey_at_stop, vehicle_journey: vehicle_journey).run_callbacks(:commit) +      end +      vjas = vehicle_journey.vehicle_journey_at_stops.last +      expect(vehicle_journey).to receive(:update_checksum_without_callbacks!).at_least(:once).and_call_original +      expect{vjas.destroy; vjas.run_callbacks(:commit)}.to change{vehicle_journey.reload.checksum} +    end +      context "when custom_field_values change" do        let(:vehicle_journey){ create(:vehicle_journey, custom_field_values: {custom_field.code.to_s => former_value}) }        let(:custom_field){ create :custom_field, field_type: :string, code: :energy, name: :energy, resource_type: "VehicleJourney" } diff --git a/spec/models/clean_up_spec.rb b/spec/models/clean_up_spec.rb index afd2d8721..f39ca2f2b 100644 --- a/spec/models/clean_up_spec.rb +++ b/spec/models/clean_up_spec.rb @@ -264,4 +264,68 @@ RSpec.describe CleanUp, :type => :model do        }      end    end + +  describe "#destroy_routes_outside_referential" do +    let(:line_referential) { create(:line_referential) } +    let(:line) { create(:line, line_referential: line_referential) } +    let(:metadata) { create(:referential_metadata, lines: [line]) } +    let(:referential) { create(:workbench_referential, metadatas: [metadata]) } +    let(:cleaner) { create(:clean_up, referential: referential) } + +    it "destroys routes not in the the referential" do +      route = create(:route) + +      cleaner.destroy_routes_outside_referential + +      expect(Chouette::Route.exists?(route.id)).to be false + +      line.routes.each do |route| +        expect(route).not_to be_destroyed +      end +    end + +    it "cascades destruction of vehicle journeys and journey patterns" do +      vehicle_journey = create(:vehicle_journey) + +      cleaner.destroy_routes_outside_referential + +      expect(Chouette::Route.exists?(vehicle_journey.route.id)).to be false +      expect( +        Chouette::JourneyPattern.exists?(vehicle_journey.journey_pattern.id) +      ).to be false +      expect(Chouette::VehicleJourney.exists?(vehicle_journey.id)).to be false +    end +  end + +  describe "#destroy_empty" do +    it "calls the appropriate destroy methods" do +      cleaner = create(:clean_up) + +      expect(cleaner).to receive(:destroy_vehicle_journeys) +      expect(cleaner).to receive(:destroy_journey_patterns) +      expect(cleaner).to receive(:destroy_routes) + +      cleaner.destroy_empty +    end +  end + +  describe "#run_methods" do +    let(:cleaner) { create(:clean_up) } + +    it "calls methods in the :methods attribute" do +      cleaner = create( +        :clean_up, +        methods: [:destroy_routes_outside_referential] +      ) + +      expect(cleaner).to receive(:destroy_routes_outside_referential) +      cleaner.run_methods +    end + +    it "doesn't do anything if :methods is nil" do +      cleaner = create(:clean_up) + +      expect { cleaner.run_methods }.not_to raise_error +    end +  end  end diff --git a/spec/models/merge_spec.rb b/spec/models/merge_spec.rb index 59e2cc500..8c3f48272 100644 --- a/spec/models/merge_spec.rb +++ b/spec/models/merge_spec.rb @@ -8,7 +8,7 @@ RSpec.describe Merge do      line_referential = FactoryGirl.create :line_referential      company = FactoryGirl.create :company, line_referential: line_referential -    10.times { FactoryGirl.create :line, line_referential: line_referential, company: company, network: nil } +    4.times { FactoryGirl.create :line, line_referential: line_referential, company: company, network: nil }      workbench = FactoryGirl.create :workbench, line_referential: line_referential, stop_area_referential: stop_area_referential @@ -19,7 +19,7 @@ RSpec.describe Merge do                                        organisation: workbench.organisation,                                        metadatas: [referential_metadata] -    factor = 1 +    factor = 2      stop_points_positions = {}      routing_constraint_zones = {} @@ -32,7 +32,7 @@ RSpec.describe Merge do          end        end -      referential.routes.each do |route| +      referential.routes.each_with_index do |route, index|          route.stop_points.each do |sp|            sp.set_list_position 0          end @@ -47,9 +47,18 @@ RSpec.describe Merge do            routing_constraint_zones[route.id][constraint_zone.checksum] = constraint_zone          end -        route.reload.update_checksum! +        if index.even? +          route.wayback = :outbound +        else +          route.update_column :wayback, :inbound +          route.opposite_route = route.opposite_route_candidates.sample +        end + +        route.save! +        route.reload.update_checksum!          expect(route.reload.checksum).to_not eq checksum +          factor.times do            FactoryGirl.create :journey_pattern, route: route, stop_points: route.stop_points.sample(3)          end @@ -83,12 +92,14 @@ RSpec.describe Merge do      output.routes.each do |route|        stop_points = nil        old_route = nil +      old_opposite_route = nil        referential.switch do          old_route = Chouette::Route.find_by(checksum: route.checksum)          stop_points = {}          old_route.routing_constraint_zones.each do |constraint_zone|            stop_points[constraint_zone.checksum] = constraint_zone.stop_points.map(&:registration_number)          end +        old_opposite_route = old_route.opposite_route        end        routing_constraint_zones[old_route.id].each do |checksum, constraint_zone|          new_constraint_zone = route.routing_constraint_zones.where(checksum: checksum).last @@ -99,6 +110,8 @@ RSpec.describe Merge do        route.vehicle_journeys.each do |vehicle_journey|          expect(vehicle_journey.ignored_routing_contraint_zones.size).to eq vehicle_journey.ignored_routing_contraint_zone_ids.size        end + +      expect(route.opposite_route&.checksum).to eq(old_opposite_route&.checksum)      end      # Let's check stop_point positions are respected diff --git a/spec/models/route_spec.rb b/spec/models/route_spec.rb index 58524038b..dbf00ab0b 100644 --- a/spec/models/route_spec.rb +++ b/spec/models/route_spec.rb @@ -2,6 +2,11 @@ require 'spec_helper'  RSpec.describe Chouette::Route, :type => :model do    subject(:route){ create :route } +  context "the checksum" do +    it "should change when a stop is removed" do +      expect{route.stop_points.last.destroy}.to change {route.reload.checksum} +    end +  end    context "metadatas" do      it "should be empty at first" do        expect(Chouette::Route.has_metadata?).to be_truthy | 
