diff options
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/factories/chouette_time_table.rb | 17 | ||||
| -rw-r--r-- | spec/models/chouette/vehicle_journey_spec.rb | 83 |
2 files changed, 92 insertions, 8 deletions
diff --git a/spec/factories/chouette_time_table.rb b/spec/factories/chouette_time_table.rb index 81a08ca2a..af48e1b42 100644 --- a/spec/factories/chouette_time_table.rb +++ b/spec/factories/chouette_time_table.rb @@ -11,18 +11,21 @@ FactoryGirl.define do end after(:create) do |time_table, evaluator| - - 0.upto(4) do |i| - time_table.dates << create(:time_table_date, :time_table => time_table, :date => i.days.since.to_date, :in_out => true) + unless time_table.dates.any? + evaluator.dates_count.times do |i| + time_table.dates << create(:time_table_date, :time_table => time_table, :date => i.days.since.to_date, :in_out => true) + end end start_date = Date.today end_date = start_date + 10 - 0.upto(4) do |i| - time_table.periods << create(:time_table_period, :time_table => time_table, :period_start => start_date, :period_end => end_date) - start_date = start_date + 20 - end_date = start_date + 10 + unless time_table.periods.any? + evaluator.periods_count.times do |i| + time_table.periods << create(:time_table_period, :time_table => time_table, :period_start => start_date, :period_end => end_date) + start_date = start_date + 20 + end_date = start_date + 10 + end end time_table.save_shortcuts time_table.update_checksum! diff --git a/spec/models/chouette/vehicle_journey_spec.rb b/spec/models/chouette/vehicle_journey_spec.rb index 06f392d65..70661bcc5 100644 --- a/spec/models/chouette/vehicle_journey_spec.rb +++ b/spec/models/chouette/vehicle_journey_spec.rb @@ -60,11 +60,92 @@ describe Chouette::VehicleJourney, :type => :model do expect(subject).to include included_purchase_window end - it "should include VJ with overlapping_purchase_window purchase window" do + it "should include VJ with overlapping purchase_window purchase window" do expect(subject).to include overlapping_purchase_window end end + describe '#in_time_table' do + let(:start_date){2.month.ago.to_date} + let(:end_date){1.month.ago.to_date} + + subject{Chouette::VehicleJourney.with_matching_timetable start_date..end_date} + + context "without time table" do + let!(:vehicle_journey){ create :vehicle_journey } + it "should not include VJ " do + expect(subject).to_not include vehicle_journey + end + end + + context "without a time table matching on a regular day" do + let(:timetable){ + period = create :time_table_period, period_start: start_date-2.day, period_end: start_date + create :time_table, periods: [period], dates_count: 0 + } + let!(:vehicle_journey){ create :vehicle_journey, time_tables: [timetable] } + it "should include VJ " do + expect(subject).to include vehicle_journey + end + end + + context "without a time table matching on a regular day" do + let(:timetable){ + period = create :time_table_period, period_start: end_date, period_end: end_date+1.day + create :time_table, periods: [period], dates_count: 0 + } + let!(:vehicle_journey){ create :vehicle_journey, time_tables: [timetable] } + it "should include VJ " do + expect(subject).to include vehicle_journey + end + end + + context "with a time table with a matching period but not the right day" do + let(:start_date){end_date - 1.day} + let(:end_date){Time.now.end_of_week.to_date} + + let(:timetable){ + period = create :time_table_period, period_start: start_date-1.month, period_end: end_date+1.month + create :time_table, periods: [period], int_day_types: 4 + 8, dates_count: 0 + } + let!(:vehicle_journey){ create :vehicle_journey, time_tables: [timetable] } + it "should not include VJ " do + expect(subject).to_not include vehicle_journey + end + end + + context "with a time table with a matching period but day opted-out" do + let(:start_date){end_date - 1.day} + let(:end_date){Time.now.end_of_week.to_date} + + let(:timetable){ + period = create :time_table_period, period_start: start_date-1.month, period_end: start_date-1.day + date = create(:time_table_date, :date => start_date, in_out: false) + create :time_table, periods: [period], dates: [date] + } + let!(:vehicle_journey){ create :vehicle_journey, time_tables: [timetable] } + it "should not include VJ " do + expect(subject).to_not include vehicle_journey + end + end + + context "with a time table with no matching period but not the right extra day" do + let(:start_date){end_date - 1.day} + let(:end_date){Time.now.end_of_week.to_date} + + let(:timetable){ + period = create :time_table_period, period_start: start_date-1.month, period_end: start_date-1.day + date = create(:time_table_date, :date => start_date, in_out: true) + create :time_table, periods: [period], dates: [date] + } + let!(:vehicle_journey){ create :vehicle_journey, time_tables: [timetable] } + it "should include VJ " do + expect(subject).to include vehicle_journey + end + end + + end + describe "vjas_departure_time_must_be_before_next_stop_arrival_time", skip: "Validation currently commented out because it interferes with day offsets" do |
