gtfs 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +13 -2
- data/Gemfile +11 -8
- data/Gemfile.lock +41 -29
- data/LICENSE +21 -0
- data/README.md +15 -17
- data/Rakefile +2 -0
- data/gtfs.gemspec +5 -2
- data/lib/gtfs.rb +1 -0
- data/lib/gtfs/agency.rb +3 -3
- data/lib/gtfs/calendar.rb +2 -2
- data/lib/gtfs/calendar_date.rb +2 -2
- data/lib/gtfs/fare_attribute.rb +3 -3
- data/lib/gtfs/fare_rule.rb +2 -2
- data/lib/gtfs/feed_info.rb +19 -0
- data/lib/gtfs/frequency.rb +2 -2
- data/lib/gtfs/model.rb +28 -9
- data/lib/gtfs/route.rb +2 -2
- data/lib/gtfs/shape.rb +2 -2
- data/lib/gtfs/source.rb +19 -11
- data/lib/gtfs/stop.rb +3 -3
- data/lib/gtfs/stop_time.rb +3 -3
- data/lib/gtfs/transfer.rb +2 -2
- data/lib/gtfs/trip.rb +3 -3
- data/lib/gtfs/url_source.rb +1 -1
- data/lib/gtfs/version.rb +1 -2
- data/spec/fixtures/cassettes/invalid_gtfs_uri.yml +58 -65
- data/spec/fixtures/cassettes/valid_gtfs_uri.yml +55 -122
- data/spec/gtfs/agency_spec.rb +2 -2
- data/spec/gtfs/calendar_date_spec.rb +1 -1
- data/spec/gtfs/calendar_spec.rb +1 -1
- data/spec/gtfs/fare_attribute_spec.rb +14 -0
- data/spec/gtfs/fare_rule_spec.rb +13 -0
- data/spec/gtfs/feed_info_spec.rb +14 -0
- data/spec/gtfs/frequency_spec.rb +14 -0
- data/spec/gtfs/route_spec.rb +1 -1
- data/spec/gtfs/shape_spec.rb +1 -1
- data/spec/gtfs/source_spec.rb +23 -11
- data/spec/gtfs/stop_spec.rb +1 -1
- data/spec/gtfs/stop_time_spec.rb +2 -2
- data/spec/gtfs/transfer_spec.rb +14 -0
- data/spec/gtfs/trip_spec.rb +2 -2
- data/spec/gtfs/url_source_spec.rb +4 -4
- data/spec/spec_helper.rb +7 -3
- data/spec/support/model_shared_examples.rb +46 -22
- metadata +46 -52
data/lib/gtfs/stop.rb
CHANGED
@@ -3,7 +3,7 @@ module GTFS
|
|
3
3
|
include GTFS::Model
|
4
4
|
|
5
5
|
has_required_attrs :id, :name, :lat, :lon
|
6
|
-
has_optional_attrs :code, :desc, :zone_id, :url, :location_type, :parent_station, :timezone
|
6
|
+
has_optional_attrs :code, :desc, :zone_id, :url, :location_type, :parent_station, :timezone, :wheelchair_boarding
|
7
7
|
column_prefix :stop_
|
8
8
|
attr_accessor *attrs
|
9
9
|
|
@@ -14,8 +14,8 @@ module GTFS
|
|
14
14
|
LOCATION_TYPE_STOP = 0
|
15
15
|
LOCATION_TYPE_STATION = 1
|
16
16
|
|
17
|
-
def self.parse_stops(data)
|
18
|
-
return parse_models(data)
|
17
|
+
def self.parse_stops(data, options={})
|
18
|
+
return parse_models(data, options)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
data/lib/gtfs/stop_time.rb
CHANGED
@@ -3,15 +3,15 @@ module GTFS
|
|
3
3
|
include GTFS::Model
|
4
4
|
|
5
5
|
has_required_attrs :trip_id, :arrival_time, :departure_time, :stop_id, :stop_sequence
|
6
|
-
has_optional_attrs :stop_headsign, :pickup_type, :drop_off_type, :shape_dist_traveled
|
6
|
+
has_optional_attrs :stop_headsign, :pickup_type, :drop_off_type, :shape_dist_traveled, :timepoint
|
7
7
|
attr_accessor *attrs
|
8
8
|
|
9
9
|
collection_name :stop_times
|
10
10
|
required_file true
|
11
11
|
uses_filename 'stop_times.txt'
|
12
12
|
|
13
|
-
def self.parse_stop_times(data)
|
14
|
-
return parse_models(data)
|
13
|
+
def self.parse_stop_times(data, options={})
|
14
|
+
return parse_models(data, options)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
data/lib/gtfs/transfer.rb
CHANGED
data/lib/gtfs/trip.rb
CHANGED
@@ -3,7 +3,7 @@ module GTFS
|
|
3
3
|
include GTFS::Model
|
4
4
|
|
5
5
|
has_required_attrs :route_id, :service_id, :id
|
6
|
-
has_optional_attrs :headsign, :short_name, :direction_id, :block_id, :shape_id
|
6
|
+
has_optional_attrs :headsign, :short_name, :direction_id, :block_id, :shape_id, :wheelchair_accessible, :bikes_allowed
|
7
7
|
attr_accessor *attrs
|
8
8
|
|
9
9
|
column_prefix :trip_
|
@@ -12,8 +12,8 @@ module GTFS
|
|
12
12
|
required_file true
|
13
13
|
uses_filename 'trips.txt'
|
14
14
|
|
15
|
-
def self.parse_trips(data)
|
16
|
-
return parse_models(data)
|
15
|
+
def self.parse_trips(data, options={})
|
16
|
+
return parse_models(data, options)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
data/lib/gtfs/url_source.rb
CHANGED
@@ -6,7 +6,7 @@ module GTFS
|
|
6
6
|
|
7
7
|
def load_archive(source_url)
|
8
8
|
Dir.mktmpdir do |tmp|
|
9
|
-
file_name = File.join(tmp, "/gtfs_temp_#{Time.now}.zip")
|
9
|
+
file_name = File.join(tmp, "/gtfs_temp_#{Time.now.strftime('%Y%jT%H%M%S%z')}.zip")
|
10
10
|
uri = URI.parse(source_url)
|
11
11
|
response = Net::HTTP.get_response(uri)
|
12
12
|
open(file_name, 'wb') do |file|
|
data/lib/gtfs/version.rb
CHANGED
@@ -1,70 +1,63 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
|
4
|
-
method:
|
5
|
-
uri:
|
6
|
-
body:
|
7
|
-
|
8
|
-
|
9
|
-
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://example.org/gtfs.zip
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
Host:
|
17
|
+
- example.org
|
18
|
+
response:
|
19
|
+
status:
|
10
20
|
code: 404
|
11
21
|
message: Not Found
|
12
22
|
headers:
|
13
|
-
|
14
|
-
-
|
15
|
-
|
16
|
-
-
|
17
|
-
|
18
|
-
- Cookie,Accept-Encoding
|
19
|
-
x-pingback:
|
20
|
-
- http://www.edschmalzle.com/xmlrpc.php
|
21
|
-
expires:
|
22
|
-
- Wed, 11 Jan 1984 05:00:00 GMT
|
23
|
-
cache-control:
|
24
|
-
- no-cache, must-revalidate, max-age=0
|
25
|
-
pragma:
|
26
|
-
- no-cache
|
27
|
-
last-modified:
|
28
|
-
- Wed, 18 Jan 2012 05:04:54 GMT
|
29
|
-
transfer-encoding:
|
30
|
-
- chunked
|
31
|
-
content-type:
|
23
|
+
Age:
|
24
|
+
- '164717'
|
25
|
+
Cache-Control:
|
26
|
+
- max-age=604800
|
27
|
+
Content-Type:
|
32
28
|
- text/html; charset=UTF-8
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
Schmalzle\t\t\tAll rights reserved. Design by <a href=\"http://www.freewpthemes.net/\">Free
|
69
|
-
WordPress Themes</a> • \r\n\t\t\tPowered by <a href=\"http://wordpress.org/\">WordPress</a></p>\r\n\t</div>\r\n</div>\r\n</body></html>"
|
70
|
-
http_version: '1.1'
|
29
|
+
Date:
|
30
|
+
- Fri, 23 Oct 2020 23:02:49 GMT
|
31
|
+
Expires:
|
32
|
+
- Fri, 30 Oct 2020 23:02:49 GMT
|
33
|
+
Last-Modified:
|
34
|
+
- Thu, 22 Oct 2020 01:17:32 GMT
|
35
|
+
Server:
|
36
|
+
- ECS (oxr/837A)
|
37
|
+
Vary:
|
38
|
+
- Accept-Encoding
|
39
|
+
X-Cache:
|
40
|
+
- 404-HIT
|
41
|
+
Content-Length:
|
42
|
+
- '648'
|
43
|
+
body:
|
44
|
+
encoding: ASCII-8BIT
|
45
|
+
string: "<!doctype html>\n<html>\n<head>\n <title>Example Domain</title>\n\n
|
46
|
+
\ <meta charset=\"utf-8\" />\n <meta http-equiv=\"Content-type\" content=\"text/html;
|
47
|
+
charset=utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width,
|
48
|
+
initial-scale=1\" />\n <style type=\"text/css\">\n body {\n background-color:
|
49
|
+
#f0f0f2;\n margin: 0;\n padding: 0;\n font-family: -apple-system,
|
50
|
+
system-ui, BlinkMacSystemFont, \"Segoe UI\", \"Open Sans\", \"Helvetica Neue\",
|
51
|
+
Helvetica, Arial, sans-serif;\n \n }\n div {\n width:
|
52
|
+
600px;\n margin: 5em auto;\n padding: 2em;\n background-color:
|
53
|
+
#fdfdff;\n border-radius: 0.5em;\n box-shadow: 2px 3px 7px 2px
|
54
|
+
rgba(0,0,0,0.02);\n }\n a:link, a:visited {\n color: #38488f;\n
|
55
|
+
\ text-decoration: none;\n }\n @media (max-width: 700px) {\n div
|
56
|
+
{\n margin: 0 auto;\n width: auto;\n }\n }\n
|
57
|
+
\ </style> \n</head>\n\n<body>\n<div>\n <h1>Example Domain</h1>\n
|
58
|
+
\ <p>This domain is for use in illustrative examples in documents. You may
|
59
|
+
use this\n domain in literature without prior coordination or asking for
|
60
|
+
permission.</p>\n <p><a href=\"https://www.iana.org/domains/example\">More
|
61
|
+
information...</a></p>\n</div>\n</body>\n</html>\n"
|
62
|
+
recorded_at: Fri, 23 Oct 2020 23:02:49 GMT
|
63
|
+
recorded_with: VCR 6.0.0
|
@@ -1,127 +1,60 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
|
4
|
-
method:
|
5
|
-
uri:
|
6
|
-
body:
|
7
|
-
|
8
|
-
|
9
|
-
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://developers.google.com/transit/gtfs/examples/sample-feed.zip
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
Host:
|
17
|
+
- developers.google.com
|
18
|
+
response:
|
19
|
+
status:
|
10
20
|
code: 200
|
11
21
|
message: OK
|
12
22
|
headers:
|
13
|
-
|
14
|
-
- nginx/1.0.14
|
15
|
-
date:
|
16
|
-
- Fri, 13 Apr 2012 21:52:30 GMT
|
17
|
-
content-type:
|
23
|
+
Content-Type:
|
18
24
|
- application/zip
|
19
|
-
|
20
|
-
-
|
21
|
-
|
22
|
-
-
|
23
|
-
|
24
|
-
-
|
25
|
-
|
26
|
-
-
|
27
|
-
|
28
|
-
-
|
29
|
-
|
30
|
-
-
|
31
|
-
|
32
|
-
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
wyAUgOH7wrzJobgdNXkZkXo6lW5WTaFvP8GkwoTgxY/6udQck4sBfM7x7W+u
|
92
|
-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
-
iVyIpbqa/ZtuFH4OnBlEZkGNUo2M9QpjgAOweWyQ0L1WWg5iVyH2oga5Y3AU
|
94
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
H0WjSE2PfAFQSwECHgMUAAAACAC8YjhAoHB3joAAAACqAAAACgAYAAAAAAAB
|
112
|
-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
-
AQIeAxQAAAAIAO5iOECFrPgQZAAAAMIAAAAMABgAAAAAAAEAAACkgcQAAABj
|
114
|
-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
-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
-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
-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
-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
-
AACXAQAACgAYAAAAAAABAAAApIHECAAAc2hhcGVzLnR4dFVUBQADrZyIT3V4
|
120
|
-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
-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
-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
-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
-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
-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
|
126
|
-
AJENAAAAAA==
|
127
|
-
http_version: '1.1'
|
25
|
+
Last-Modified:
|
26
|
+
- Wed, 11 Jan 2012 14:31:33 GMT
|
27
|
+
Content-Disposition:
|
28
|
+
- attachment; filename="sample-feed.zip"
|
29
|
+
Cache-Control:
|
30
|
+
- no-cache, must-revalidate
|
31
|
+
Expires:
|
32
|
+
- '0'
|
33
|
+
Pragma:
|
34
|
+
- no-cache
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=31536000; includeSubdomains
|
37
|
+
X-Frame-Options:
|
38
|
+
- SAMEORIGIN
|
39
|
+
X-Xss-Protection:
|
40
|
+
- '0'
|
41
|
+
X-Content-Type-Options:
|
42
|
+
- nosniff
|
43
|
+
X-Cloud-Trace-Context:
|
44
|
+
- 9d9cd729a1af3deba482f46f3a68c263
|
45
|
+
Date:
|
46
|
+
- Fri, 23 Oct 2020 23:02:49 GMT
|
47
|
+
Server:
|
48
|
+
- Google Frontend
|
49
|
+
Content-Length:
|
50
|
+
- '3217'
|
51
|
+
Alt-Svc:
|
52
|
+
- h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443";
|
53
|
+
ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443";
|
54
|
+
ma=2592000; v="46,43"
|
55
|
+
body:
|
56
|
+
encoding: ASCII-8BIT
|
57
|
+
string: !binary |-
|
58
|
+
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
|
59
|
+
recorded_at: Fri, 23 Oct 2020 23:02:49 GMT
|
60
|
+
recorded_with: VCR 6.0.0
|
data/spec/gtfs/agency_spec.rb
CHANGED
@@ -2,12 +2,12 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
2
|
|
3
3
|
describe GTFS::Agency do
|
4
4
|
describe 'Agency.parse_agencies' do
|
5
|
-
let(:header_line) {"agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone\n"}
|
5
|
+
let(:header_line) {"agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone,agency_email\n"}
|
6
6
|
let(:invalid_header_line) {"agency_id,agency_url,agency_timezone,agency_lang,agency_phone\n"}
|
7
7
|
let(:valid_line) {"1,Maryland Transit Administration,http://www.mta.maryland.gov,America/New_York,en,410-539-5000\n"}
|
8
8
|
let(:invalid_line) {"1,,http://www.mta.maryland.gov,America/New_York,en,410-539-5000\n"}
|
9
9
|
|
10
|
-
subject {GTFS::Agency.parse_agencies(source_text)}
|
10
|
+
subject {GTFS::Agency.parse_agencies(source_text, opts)}
|
11
11
|
|
12
12
|
include_examples 'models'
|
13
13
|
end
|
@@ -7,7 +7,7 @@ describe GTFS::CalendarDate do
|
|
7
7
|
let(:valid_line) {"3,20110905,1\n"}
|
8
8
|
let(:invalid_line) {"3,,1\n"}
|
9
9
|
|
10
|
-
subject {GTFS::CalendarDate.parse_calendar_dates(source_text)}
|
10
|
+
subject {GTFS::CalendarDate.parse_calendar_dates(source_text, opts)}
|
11
11
|
|
12
12
|
include_examples 'models'
|
13
13
|
end
|
data/spec/gtfs/calendar_spec.rb
CHANGED
@@ -7,7 +7,7 @@ describe GTFS::Calendar do
|
|
7
7
|
let(:valid_line) {"1,1,1,1,1,1,0,0,20110828,20120204\n"}
|
8
8
|
let(:invalid_line) {"1,,1,,1,,0,,,20120204\n"}
|
9
9
|
|
10
|
-
subject {GTFS::Calendar.parse_calendars(source_text)}
|
10
|
+
subject {GTFS::Calendar.parse_calendars(source_text, opts)}
|
11
11
|
|
12
12
|
include_examples 'models'
|
13
13
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe GTFS::FareAttribute do
|
4
|
+
describe '.parse_fare_attributes' do
|
5
|
+
let(:header_line) {"fare_id,price,currency_type,payment_method,transfers,transfer_duration\n"}
|
6
|
+
let(:invalid_header_line) {",,currency_type,,,transfer_duration\n"}
|
7
|
+
let(:valid_line) {"1,1.23,USD,0, ,5000\n"}
|
8
|
+
let(:invalid_line) {"1,,,0, ,5000\n"}
|
9
|
+
|
10
|
+
subject {GTFS::FareAttribute.parse_fare_attributes(source_text, opts)}
|
11
|
+
|
12
|
+
include_examples 'models'
|
13
|
+
end
|
14
|
+
end
|