diff options
| -rw-r--r-- | app/models/import/gtfs.rb | 13 | ||||
| -rw-r--r-- | app/models/referential.rb | 4 | ||||
| -rw-r--r-- | spec/models/import/gtfs_spec.rb | 25 |
3 files changed, 42 insertions, 0 deletions
diff --git a/app/models/import/gtfs.rb b/app/models/import/gtfs.rb index e6552f936..b0c1070bd 100644 --- a/app/models/import/gtfs.rb +++ b/app/models/import/gtfs.rb @@ -254,6 +254,19 @@ class Import::Gtfs < Import::Base end end + def import_calendar_dates + source.calendar_dates.each_slice(500) do |slice| + Chouette::TimeTable.transaction do + slice.each do |calendar_date| + time_table = referential.time_tables.find time_tables_by_service_id[calendar_date.service_id] + date = time_table.dates.build date: Date.parse(calendar_date.date), in_out: calendar_date.exception_type == "1" + + save_model date + end + end + end + end + def save_model(model) unless model.save Rails.logger.info "Can't save #{model.class.name} : #{model.errors.inspect}" diff --git a/app/models/referential.rb b/app/models/referential.rb index 65af58873..70148aa8e 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -168,6 +168,10 @@ class Referential < ActiveRecord::Base Chouette::TimeTable.all end + def time_table_dates + Chouette::TimeTableDate.all + end + def timebands Chouette::Timeband.all end diff --git a/spec/models/import/gtfs_spec.rb b/spec/models/import/gtfs_spec.rb index 934f13c1d..f2404b771 100644 --- a/spec/models/import/gtfs_spec.rb +++ b/spec/models/import/gtfs_spec.rb @@ -220,6 +220,31 @@ RSpec.describe Import::Gtfs do end end + describe "#import_calendar_dates" do + let(:import) { create_import "google-sample-feed.zip" } + + before do + import.prepare_referential + import.import_calendars + end + + it "should create a Timetable::Date for each calendar date" do + import.import_calendar_dates + + def d(value) + Date.parse(value) + end + + defined_attributes = ->(d) { + [d.time_table.comment, d.date, d.in_out] + } + expected_attributes = [ + ["Calendar FULLW", d("Mon, 04 Jun 2007"), false] + ] + expect(referential.time_table_dates.map(&defined_attributes)).to eq(expected_attributes) + end + end + describe "#download_local_file" do let(:file) { "google-sample-feed.zip" } |
