From f3dc4e33c547d47388b95053f629842f685d065f Mon Sep 17 00:00:00 2001 From: Rishabh Mehta Date: Thu, 18 Feb 2021 00:05:21 +0530 Subject: [PATCH 1/4] changes for new files coming from google in the latest zip --- gtfs.gemspec | 1 + lib/gtfs.rb | 4 ++++ lib/gtfs/attribution.rb | 20 ++++++++++++++++++++ lib/gtfs/fare_attribute.rb | 2 +- lib/gtfs/feed_info.rb | 2 +- lib/gtfs/level.rb | 17 +++++++++++++++++ lib/gtfs/model.rb | 2 +- lib/gtfs/pathway.rb | 19 +++++++++++++++++++ lib/gtfs/route.rb | 2 +- lib/gtfs/source.rb | 6 +++--- lib/gtfs/stop.rb | 3 ++- lib/gtfs/translation.rb | 18 ++++++++++++++++++ 12 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 lib/gtfs/attribution.rb create mode 100644 lib/gtfs/level.rb create mode 100644 lib/gtfs/pathway.rb create mode 100644 lib/gtfs/translation.rb diff --git a/gtfs.gemspec b/gtfs.gemspec index d6d4941..7de847c 100644 --- a/gtfs.gemspec +++ b/gtfs.gemspec @@ -1,4 +1,5 @@ # -*- encoding: utf-8 -*- +require "date" $:.push File.expand_path('../lib', __FILE__) require './lib/gtfs/version' diff --git a/lib/gtfs.rb b/lib/gtfs.rb index 9d42ec2..840e70f 100644 --- a/lib/gtfs.rb +++ b/lib/gtfs.rb @@ -14,6 +14,10 @@ require 'gtfs/fare_rule' require 'gtfs/frequency' require 'gtfs/transfer' +require 'gtfs/translation' +require 'gtfs/pathway' +require 'gtfs/attribution' +require 'gtfs/level' require 'gtfs/source' require 'gtfs/url_source' diff --git a/lib/gtfs/attribution.rb b/lib/gtfs/attribution.rb new file mode 100644 index 0000000..d74b97f --- /dev/null +++ b/lib/gtfs/attribution.rb @@ -0,0 +1,20 @@ +module GTFS + class Attribution + include GTFS::Model + + has_required_attrs :organization_name + has_optional_attrs :attribution_id, :agency_id, :route_id, :trip_id, :is_producer, + :is_operator, :is_authority, :attribution_url, :attribution_email, :attribution_phone + + attr_accessor *attrs + + collection_name :attributions + + required_file false + uses_filename 'attributions.txt' + + def self.parse_attributions(data, options={}) + return parse_models(data, options) + end + end +end diff --git a/lib/gtfs/fare_attribute.rb b/lib/gtfs/fare_attribute.rb index 85c63dd..ac6ed6a 100644 --- a/lib/gtfs/fare_attribute.rb +++ b/lib/gtfs/fare_attribute.rb @@ -3,7 +3,7 @@ class FareAttribute include GTFS::Model has_required_attrs :fare_id, :price, :currency_type, :payment_method, :transfers - has_optional_attrs :transfer_duration + has_optional_attrs :transfer_duration, :agency_id attr_accessor *attrs collection_name :fare_attributes diff --git a/lib/gtfs/feed_info.rb b/lib/gtfs/feed_info.rb index 32298d8..2f58a4f 100644 --- a/lib/gtfs/feed_info.rb +++ b/lib/gtfs/feed_info.rb @@ -3,7 +3,7 @@ class FeedInfo include GTFS::Model has_required_attrs :publisher_name, :publisher_url, :lang - has_optional_attrs :start_date, :end_date, :version + has_optional_attrs :start_date, :end_date, :version, :contact_email, :contact_url, :default_lang attr_accessor *attrs column_prefix :feed_ diff --git a/lib/gtfs/level.rb b/lib/gtfs/level.rb new file mode 100644 index 0000000..96cc5a3 --- /dev/null +++ b/lib/gtfs/level.rb @@ -0,0 +1,17 @@ +module GTFS + class Level + include GTFS::Model + + has_required_attrs :level_id, :level_index + has_optional_attrs :level_name + attr_accessor *attrs + + collection_name :levels + required_file false + uses_filename 'levels.txt' + + def self.parse_levels(data, options={}) + return parse_models(data, options) + end + end +end diff --git a/lib/gtfs/model.rb b/lib/gtfs/model.rb index ecf0018..c59f103 100644 --- a/lib/gtfs/model.rb +++ b/lib/gtfs/model.rb @@ -39,7 +39,7 @@ def required_attrs end def attrs - required_attrs + optional_attrs + required_attrs + optional_attrs end ##################################### diff --git a/lib/gtfs/pathway.rb b/lib/gtfs/pathway.rb new file mode 100644 index 0000000..3e1bf9d --- /dev/null +++ b/lib/gtfs/pathway.rb @@ -0,0 +1,19 @@ +module GTFS + class Pathway + include GTFS::Model + + has_required_attrs :pathway_id, :from_stop_id, :to_stop_id, :pathway_mode, :is_bidirectional + has_optional_attrs :length, :traversal_time, :stair_count, :max_slope, :min_width, :signposted_as, + :reversed_signposted_as + + attr_accessor *attrs + collection_name :pathways + + required_file false + uses_filename 'pathways.txt' + + def self.parse_pathways(data, options={}) + return parse_models(data, options) + end + end +end \ No newline at end of file diff --git a/lib/gtfs/route.rb b/lib/gtfs/route.rb index 92af4fe..325cc41 100644 --- a/lib/gtfs/route.rb +++ b/lib/gtfs/route.rb @@ -3,7 +3,7 @@ class Route include GTFS::Model has_required_attrs :id, :short_name, :long_name, :type - has_optional_attrs :agency_id, :desc, :url, :color, :text_color + has_optional_attrs :agency_id, :desc, :url, :color, :text_color, :sort_order attr_accessor *attrs column_prefix :route_ diff --git a/lib/gtfs/source.rb b/lib/gtfs/source.rb index a2c7818..0f6aec7 100644 --- a/lib/gtfs/source.rb +++ b/lib/gtfs/source.rb @@ -5,9 +5,9 @@ module GTFS class Source - ENTITIES = [GTFS::Agency, GTFS::Stop, GTFS::Route, GTFS::Trip, GTFS::StopTime, - GTFS::Calendar, GTFS::CalendarDate, GTFS::Shape, GTFS::FareAttribute, - GTFS::FareRule, GTFS::Frequency, GTFS::Transfer, GTFS::FeedInfo] + ENTITIES = [GTFS::Agency, GTFS::Stop, GTFS::Route, GTFS::Trip, GTFS::StopTime, GTFS::Calendar, GTFS::CalendarDate, + GTFS::Shape, GTFS::FareAttribute, GTFS::FareRule, GTFS::Frequency, GTFS::Transfer, GTFS::FeedInfo, + GTFS::Attribution, GTFS::Pathway, GTFS::Translation, GTFS::Level] REQUIRED_SOURCE_FILES = ENTITIES.select(&:required_file?).map(&:filename) OPTIONAL_SOURCE_FILES = ENTITIES.reject(&:required_file?).map(&:filename) diff --git a/lib/gtfs/stop.rb b/lib/gtfs/stop.rb index 15e07b9..b85a2e0 100644 --- a/lib/gtfs/stop.rb +++ b/lib/gtfs/stop.rb @@ -3,7 +3,8 @@ class Stop include GTFS::Model has_required_attrs :id, :name, :lat, :lon - has_optional_attrs :code, :desc, :zone_id, :url, :location_type, :parent_station, :timezone, :wheelchair_boarding + has_optional_attrs :code, :desc, :zone_id, :url, :location_type, :parent_station, :timezone, :wheelchair_boarding, + :level_id, :platform_code column_prefix :stop_ attr_accessor *attrs diff --git a/lib/gtfs/translation.rb b/lib/gtfs/translation.rb new file mode 100644 index 0000000..b60247d --- /dev/null +++ b/lib/gtfs/translation.rb @@ -0,0 +1,18 @@ +module GTFS + class Translation + include GTFS::Model + + has_required_attrs :table_name, :field_name, :language, :translation + has_optional_attrs :record_id, :record_sub_id, :field_value + + attr_accessor *attrs + collection_name :translations + + required_file false + uses_filename 'translations.txt' + + def self.parse_translations(data, options={}) + return parse_models(data, options) + end + end +end \ No newline at end of file From e86b74b779044bf468747e8c94f4d373134730b9 Mon Sep 17 00:00:00 2001 From: Rishabh Mehta Date: Sat, 20 Feb 2021 12:26:05 +0530 Subject: [PATCH 2/4] merging master --- .travis.yml | 17 +- Gemfile | 14 +- Gemfile.lock | 57 ++++-- LICENSE | 21 +++ README.md | 20 +-- gtfs.gemspec | 3 +- lib/gtfs/version.rb | 2 +- spec/fixtures/cassettes/invalid_gtfs_uri.yml | 123 ++++++------- spec/fixtures/cassettes/valid_gtfs_uri.yml | 177 ++++++------------- spec/gtfs/source_spec.rb | 10 +- spec/gtfs/url_source_spec.rb | 4 +- spec/spec_helper.rb | 10 +- 12 files changed, 218 insertions(+), 240 deletions(-) create mode 100644 LICENSE diff --git a/.travis.yml b/.travis.yml index cca9009..b29fefd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,15 @@ +os: linux +dist: bionic language: ruby rvm: - - 1.9.2 - - 1.9.3 - - 2.0.0 - - 2.1.1 + - 2.5.7 + - 2.6.5 + - 2.7.0 + +before_install: + - gem install bundler + +install: bundle install --retry=3 + +notifications: + email: false diff --git a/Gemfile b/Gemfile index edd6cf2..07c3f92 100644 --- a/Gemfile +++ b/Gemfile @@ -1,9 +1,13 @@ source 'https://rubygems.org' -gem 'rake' -gem 'rspec' gem 'multi_json', '1.0.4' -gem 'simplecov', :require => false gem 'rubyzip', '~> 1.1' -gem 'vcr' -gem 'fakeweb' + +group :test, :development do + gem 'simplecov', :require => false + gem 'rake' + gem 'rspec-its' + gem 'rspec' + gem 'vcr' + gem 'webmock' +end diff --git a/Gemfile.lock b/Gemfile.lock index 636ef0d..ed88358 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,33 +1,54 @@ GEM remote: https://rubygems.org/ specs: - diff-lcs (1.1.3) - fakeweb (1.3.0) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) + crack (0.4.4) + diff-lcs (1.4.4) + docile (1.3.2) + hashdiff (1.0.1) multi_json (1.0.4) - rake (0.9.2.2) - rspec (2.8.0) - rspec-core (~> 2.8.0) - rspec-expectations (~> 2.8.0) - rspec-mocks (~> 2.8.0) - rspec-core (2.8.0) - rspec-expectations (2.8.0) - diff-lcs (~> 1.1.2) - rspec-mocks (2.8.0) - rubyzip (1.1.6) - simplecov (0.6.1) - multi_json (~> 1.0) - simplecov-html (~> 0.5.3) - simplecov-html (0.5.3) - vcr (1.11.3) + public_suffix (4.0.6) + rake (13.0.1) + rspec (3.9.0) + rspec-core (~> 3.9.0) + rspec-expectations (~> 3.9.0) + rspec-mocks (~> 3.9.0) + rspec-core (3.9.3) + rspec-support (~> 3.9.3) + rspec-expectations (3.9.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.9.0) + rspec-its (1.3.0) + rspec-core (>= 3.0.0) + rspec-expectations (>= 3.0.0) + rspec-mocks (3.9.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.9.0) + rspec-support (3.9.4) + rubyzip (1.3.0) + simplecov (0.19.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov-html (0.12.3) + vcr (6.0.0) + webmock (3.9.3) + addressable (>= 2.3.6) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) PLATFORMS ruby DEPENDENCIES - fakeweb multi_json (= 1.0.4) rake rspec + rspec-its rubyzip (~> 1.1) simplecov vcr + webmock + +BUNDLED WITH + 2.1.4 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f232683 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012 Ed Schmalzle + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 5823a68..cf90045 100644 --- a/README.md +++ b/README.md @@ -35,23 +35,9 @@ Alternatively: ... source.each_transfer {|transfer| puts transfer} -### License - -Copyright (C) 2012 Ed Schmalzle -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: +### License -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +This project is licensed under the terms of the MIT license. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +See this license at [`LICENSE`](LICENSE). diff --git a/gtfs.gemspec b/gtfs.gemspec index 7de847c..cece75d 100644 --- a/gtfs.gemspec +++ b/gtfs.gemspec @@ -6,7 +6,6 @@ require './lib/gtfs/version' Gem::Specification.new do |gem| gem.name = 'gtfs' gem.version = GTFS::VERSION - gem.date = Date.today.to_s gem.summary = 'Load and read GTFS data from zip bundles' gem.description = 'gtfs reads GTFS data from a google-compliant Zip bundle @@ -16,6 +15,8 @@ Gem::Specification.new do |gem| gem.email = ['ed@nerded.net'] gem.homepage = 'https://github.com/nerdEd/gtfs' + gem.license = 'MIT' + gem.required_ruby_version = '>= 1.9.2' gem.add_dependency 'rake' diff --git a/lib/gtfs/version.rb b/lib/gtfs/version.rb index b9f7c05..697769d 100644 --- a/lib/gtfs/version.rb +++ b/lib/gtfs/version.rb @@ -1,3 +1,3 @@ module GTFS - VERSION = '0.2.5' + VERSION = '0.3.0' end diff --git a/spec/fixtures/cassettes/invalid_gtfs_uri.yml b/spec/fixtures/cassettes/invalid_gtfs_uri.yml index 4c1da8d..cb2e4da 100644 --- a/spec/fixtures/cassettes/invalid_gtfs_uri.yml +++ b/spec/fixtures/cassettes/invalid_gtfs_uri.yml @@ -1,70 +1,63 @@ --- -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :get - uri: http://www.edschmalzle.com:80/gtfs.zip - body: !!null - headers: !!null - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus +http_interactions: +- request: + method: get + uri: https://example.org/gtfs.zip + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Host: + - example.org + response: + status: code: 404 message: Not Found headers: - date: - - Wed, 18 Jan 2012 05:04:53 GMT - server: - - Apache - vary: - - Cookie,Accept-Encoding - x-pingback: - - http://www.edschmalzle.com/xmlrpc.php - expires: - - Wed, 11 Jan 1984 05:00:00 GMT - cache-control: - - no-cache, must-revalidate, max-age=0 - pragma: - - no-cache - last-modified: - - Wed, 18 Jan 2012 05:04:54 GMT - transfer-encoding: - - chunked - content-type: + Age: + - '164717' + Cache-Control: + - max-age=604800 + Content-Type: - text/html; charset=UTF-8 - body: ! "\r\n\r\n\r\n\r\nEd Schmalzle » Page not found\r\n\r\n\r\n\r\n\n\n\n \n\n\n\n\n\r\n\r\n
\r\n
\r\n\r\n
\r\n\t
\r\n\t\t

Ed Schmalzle

\r\n\t\t

\r\n\t
\r\n
\r\n\r\n
\r\n\t\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\t
\r\n\r\n\t\t

Error 404 - Not Found

\r\n\r\n\t
\r\n\r\n
\r\n\t
    \r\n\t
\r\n
\r\n\r\n\r\n
 
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n\t
\r\n\t\t

Copyright (c) 2008\r\n\t\t\tEd - Schmalzle\t\t\tAll rights reserved. Design by Free - WordPress Themes  • \r\n\t\t\tPowered by WordPress

\r\n\t
\r\n
\r\n" - http_version: '1.1' + Date: + - Fri, 23 Oct 2020 23:02:49 GMT + Expires: + - Fri, 30 Oct 2020 23:02:49 GMT + Last-Modified: + - Thu, 22 Oct 2020 01:17:32 GMT + Server: + - ECS (oxr/837A) + Vary: + - Accept-Encoding + X-Cache: + - 404-HIT + Content-Length: + - '648' + body: + encoding: ASCII-8BIT + string: "\n\n\n Example Domain\n\n + \ \n \n \n \n\n\n\n
\n

Example Domain

\n + \

This domain is for use in illustrative examples in documents. You may + use this\n domain in literature without prior coordination or asking for + permission.

\n

More + information...

\n
\n\n\n" + recorded_at: Fri, 23 Oct 2020 23:02:49 GMT +recorded_with: VCR 6.0.0 diff --git a/spec/fixtures/cassettes/valid_gtfs_uri.yml b/spec/fixtures/cassettes/valid_gtfs_uri.yml index 323bd20..ecb2d19 100644 --- a/spec/fixtures/cassettes/valid_gtfs_uri.yml +++ b/spec/fixtures/cassettes/valid_gtfs_uri.yml @@ -1,127 +1,60 @@ --- -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :get - uri: http://dl.dropbox.com:80/u/416235/work/valid_gtfs.zip - body: !!null - headers: !!null - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus +http_interactions: +- request: + method: get + uri: https://developers.google.com/transit/gtfs/examples/sample-feed.zip + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Host: + - developers.google.com + response: + status: code: 200 message: OK headers: - server: - - nginx/1.0.14 - date: - - Fri, 13 Apr 2012 21:52:30 GMT - content-type: + Content-Type: - application/zip - connection: - - keep-alive - content-length: - - '4147' - x-robots-tag: - - noindex,nofollow - accept-ranges: - - bytes - etag: - - 1380046134n - pragma: - - public - cache-control: - - max-age=0 - body: !binary |- - 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 - AJENAAAAAA== - http_version: '1.1' + Last-Modified: + - Wed, 11 Jan 2012 14:31:33 GMT + Content-Disposition: + - attachment; filename="sample-feed.zip" + Cache-Control: + - no-cache, must-revalidate + Expires: + - '0' + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubdomains + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - '0' + X-Content-Type-Options: + - nosniff + X-Cloud-Trace-Context: + - 9d9cd729a1af3deba482f46f3a68c263 + Date: + - Fri, 23 Oct 2020 23:02:49 GMT + Server: + - Google Frontend + Content-Length: + - '3217' + Alt-Svc: + - h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443"; + ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; + ma=2592000; v="46,43" + body: + encoding: ASCII-8BIT + string: !binary |- + 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 + recorded_at: Fri, 23 Oct 2020 23:02:49 GMT +recorded_with: VCR 6.0.0 diff --git a/spec/gtfs/source_spec.rb b/spec/gtfs/source_spec.rb index 934b03f..e43118a 100644 --- a/spec/gtfs/source_spec.rb +++ b/spec/gtfs/source_spec.rb @@ -1,6 +1,13 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') describe GTFS::Source do + before(:each) do + VCR.insert_cassette 'valid_gtfs_uri' + end + after(:each) do + VCR.eject_cassette + end + let(:valid_local_source) do File.expand_path(File.dirname(__FILE__) + '/../fixtures/valid_gtfs.zip') end @@ -15,8 +22,7 @@ subject {GTFS::Source.build(data_source, opts)} context 'with a url as a data root' do - use_vcr_cassette('valid_gtfs_uri') - let(:data_source) {'http://dl.dropbox.com/u/416235/work/valid_gtfs.zip'} + let(:data_source) {'https://developers.google.com/transit/gtfs/examples/sample-feed.zip'} it {should be_instance_of GTFS::URLSource} its(:options) {should == GTFS::Source::DEFAULT_OPTIONS} diff --git a/spec/gtfs/url_source_spec.rb b/spec/gtfs/url_source_spec.rb index 6fbd110..84ecbed 100644 --- a/spec/gtfs/url_source_spec.rb +++ b/spec/gtfs/url_source_spec.rb @@ -2,7 +2,7 @@ describe GTFS::URLSource do context 'with a URI to a valid source zip' do - let(:source_path) {'http://dl.dropbox.com/u/416235/work/valid_gtfs.zip'} + let(:source_path) {'https://developers.google.com/transit/gtfs/examples/sample-feed.zip'} it 'should create a new source successfully' do VCR.use_cassette('valid_gtfs_uri') do lambda {GTFS::URLSource.new(source_path, {})}.should_not raise_error(GTFS::InvalidSourceException) @@ -11,7 +11,7 @@ end context 'with a non-existent URI' do - let(:source_path) {'http://www.edschmalzle.com/gtfs.zip'} + let(:source_path) {'https://example.org/gtfs.zip'} it 'should raise an exception' do VCR.use_cassette('invalid_gtfs_uri') do lambda {GTFS::URLSource.new(source_path, {})}.should raise_error(GTFS::InvalidSourceException) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b1dff87..9c4a30c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -6,16 +6,20 @@ require 'bundler/setup' require 'rspec' +require 'rspec/its' require 'vcr' require 'gtfs' require File.expand_path(File.dirname(__FILE__) + '/support/model_shared_examples') RSpec.configure do |config| - config.extend VCR::RSpec::Macros + config.expect_with :rspec do |expectations| + expectations.syntax = [:should , :expect] + expectations.on_potential_false_positives = :nothing + end end -VCR.config do |c| +VCR.configure do |c| c.cassette_library_dir = File.join(File.dirname(__FILE__), '/fixtures/cassettes') - c.stub_with :fakeweb + c.hook_into :webmock end From b30bf872f04a616c8067ce54ae28a21545c342fc Mon Sep 17 00:00:00 2001 From: Rishabh Mehta Date: Sat, 20 Feb 2021 16:42:03 +0530 Subject: [PATCH 3/4] added specs for new models --- spec/gtfs/attribution_spec.rb | 14 ++++++++++++++ spec/gtfs/level_spec.rb | 14 ++++++++++++++ spec/gtfs/pathway_spec.rb | 14 ++++++++++++++ spec/gtfs/translation_spec.rb | 14 ++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 spec/gtfs/attribution_spec.rb create mode 100644 spec/gtfs/level_spec.rb create mode 100644 spec/gtfs/pathway_spec.rb create mode 100644 spec/gtfs/translation_spec.rb diff --git a/spec/gtfs/attribution_spec.rb b/spec/gtfs/attribution_spec.rb new file mode 100644 index 0000000..5f06aaa --- /dev/null +++ b/spec/gtfs/attribution_spec.rb @@ -0,0 +1,14 @@ +require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') + +describe GTFS::Attribution do + describe 'Attribution.parse_attributions' do + let(:header_line) {"organization_name\n"} + let(:invalid_header_line) {"\n"} + let(:valid_line) {"Transit Feed Solutions Tokyo\n"} + let(:invalid_line) {"\n"} + + subject {GTFS::Attribution.parse_attributions(source_text, opts)} + + include_examples 'models' + end +end \ No newline at end of file diff --git a/spec/gtfs/level_spec.rb b/spec/gtfs/level_spec.rb new file mode 100644 index 0000000..298230f --- /dev/null +++ b/spec/gtfs/level_spec.rb @@ -0,0 +1,14 @@ +require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') + +describe GTFS::Level do + describe 'Level.parse_levels' do + let(:header_line) {"level_id,level_index\n"} + let(:invalid_header_line) {",level_index\n"} + let(:valid_line) {"L0,0\n"} + let(:invalid_line) {",1\n"} + + subject {GTFS::Level.parse_levels(source_text, opts)} + + include_examples 'models' + end +end \ No newline at end of file diff --git a/spec/gtfs/pathway_spec.rb b/spec/gtfs/pathway_spec.rb new file mode 100644 index 0000000..19de768 --- /dev/null +++ b/spec/gtfs/pathway_spec.rb @@ -0,0 +1,14 @@ +require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') + +describe GTFS::Pathway do + describe 'Pathway.parse_pathways' do + let(:header_line) {"pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional\n"} + let(:invalid_header_line) {",rom_stop_id,to_stop_id,pathway_mode,is_bidirectional\n"} + let(:valid_line) {"E1N1,E1,N1,2,1\n"} + let(:invalid_line) {"E1N1,E1,,,1\n"} + + subject {GTFS::Pathway.parse_pathways(source_text, opts)} + + include_examples 'models' + end +end \ No newline at end of file diff --git a/spec/gtfs/translation_spec.rb b/spec/gtfs/translation_spec.rb new file mode 100644 index 0000000..e238a7e --- /dev/null +++ b/spec/gtfs/translation_spec.rb @@ -0,0 +1,14 @@ +require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') + +describe GTFS::Translation do + describe 'Translation.parse_translations' do + let(:header_line) {"table_name,field_name,language,translation\n"} + let(:invalid_header_line) {",stop_name,,translation\n"} + let(:valid_line) {"stops,stop_name,en,Tokyo Station\n"} + let(:invalid_line) {",,,en\n"} + + subject {GTFS::Translation.parse_translations(source_text, opts)} + + include_examples 'models' + end +end \ No newline at end of file From 97b1323efa769de555419ab5cc1b3e3d485ae8d1 Mon Sep 17 00:00:00 2001 From: Rishabh Mehta Date: Sat, 20 Feb 2021 16:45:27 +0530 Subject: [PATCH 4/4] removed date requirement --- gtfs.gemspec | 1 - 1 file changed, 1 deletion(-) diff --git a/gtfs.gemspec b/gtfs.gemspec index cece75d..1db8469 100644 --- a/gtfs.gemspec +++ b/gtfs.gemspec @@ -1,5 +1,4 @@ # -*- encoding: utf-8 -*- -require "date" $:.push File.expand_path('../lib', __FILE__) require './lib/gtfs/version'