atco 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 215cf54f3257e776c20d54d0177731f06cf62eda409e7763457c709757aa1a52
4
- data.tar.gz: 97ebd8cf82c779b872f23204079a230aae0d9b159bacdf3db5042cada877a197
3
+ metadata.gz: 82cd5858676f7202932ecbe6d68846066019bd75c5637c33a44ec3eaf83fe599
4
+ data.tar.gz: 144dad716574ca9f45f63170193de8c1115edc6a4ece1557516c57e9d1d250a3
5
5
  SHA512:
6
- metadata.gz: 69b1de96881df1044138cbebe82ea3e22053c47d36aa38dbb39c1018683675eb44e27619be1d29346d5ef156f924c3ee8e408808aec11b7940ad2ca4877dfc25
7
- data.tar.gz: d14f0b410610dbaf1d2e4e80ce41703becb6fddc99c06bbe3a88500d65bde6b3b44bdfa7768405682c654abf8cb0ecb5470a7589b7f6b978f0933db2e230736e
6
+ metadata.gz: 947c0a1bbfa755bacb1d907c50f90720e98dcebfef88d500b6e418c652827846ea2c32372e8aed4fdd8e1e4aad71ce9f61acd1f0c51b0dd68bd696d1e9774a98
7
+ data.tar.gz: 9556d7e0bc6cd268b326475c03c3136a59f5f0066db0d1a84fa7510ee9e4eeb0a0f8cc1a63cb1869bd7165184eb54481afdb984d0cd2bb79bc7c6dcfe21a1e32
data/lib/atco/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Atco
4
- VERSION = "1.0.1"
4
+ VERSION = "1.0.2"
5
5
  end
data/spec/atco_spec.rb CHANGED
@@ -1,175 +1,198 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "#{File.dirname(__FILE__)}/spec_helper"
4
3
  require "json"
5
4
 
6
- describe Atco do # rubocop:disable Metrics/BlockLength
5
+ RSpec.describe Atco do # rubocop:disable Metrics/BlockLength
7
6
  it "has a version number" do
8
7
  expect(Atco::VERSION).not_to be nil
9
8
  end
10
9
 
11
- it "should output file for debugging!" do
12
- result = Atco.parse("spec/fixtures/example.cif")
13
- File.open("test.output", "w+") do |f|
14
- f.flush
15
- f.write(JSON.pretty_generate(result))
16
- end
17
- end
18
-
19
10
  it "should parse header from fixture" do
20
11
  result = Atco.parse("spec/fixtures/example.cif")
21
- expect result[:header] == {
22
- file_type: "ATCO-CIF",
23
- file_originator: "Electronic Registration",
24
- source_product: "MIA 4.20.18",
25
- version: "5.0",
26
- production_datetime: "20090915113809"
27
- }
12
+ expect(result[:header]).to eq(
13
+ {
14
+ file_type: "ATCO-CIF",
15
+ file_originator: "Electronic Registration",
16
+ source_product: "MIA 4.20.18",
17
+ version: "5.0",
18
+ production_datetime: "20090915113809"
19
+ }
20
+ )
28
21
  end
29
22
 
30
23
  it "should parse locations from fixture" do
31
24
  result = Atco.parse("spec/fixtures/example.cif")
32
- expect result[:header] == {
33
- file_type: "ATCO-CIF",
34
- file_originator: "Electronic Registration",
35
- source_product: "MIA 4.20.18",
36
- version: "5.0",
37
- production_datetime: "20090915113809"
38
- }
25
+ expect(result[:header]).to eq(
26
+ {
27
+ file_type: "ATCO-CIF",
28
+ file_originator: "Electronic Registration",
29
+ source_product: "MIA 4.20.18",
30
+ version: "5.0",
31
+ production_datetime: "20090915113809"
32
+ }
33
+ )
39
34
  end
40
35
 
41
36
  it "should parse header" do
42
- expect Atco.parse_header("ATCO-CIF0500Electronic Registration MIA 4.20.18 20090915113809\r\n") == {
43
- file_type: "ATCO-CIF",
44
- version: "5.0",
45
- file_originator: "Electronic Registration",
46
- source_product: "MIA 4.20.18",
47
- production_datetime: "20090915113809"
48
- }
37
+ expect(Atco.parse_header("ATCO-CIF0500Electronic Registration MIA 4.20.18 20090915113809\r\n")).to eq(
38
+ {
39
+ file_type: "ATCO-CIF",
40
+ version: "5.0",
41
+ file_originator: "Electronic Registration",
42
+ source_product: "MIA 4.20.18",
43
+ production_datetime: "20090915113809"
44
+ }
45
+ )
49
46
  end
50
47
 
51
48
  it "should parse bank holiday" do
52
- expect Atco.parse_bank_holiday("QHN20061225") == {
53
- record_identity: "QH",
54
- transaction_type: "N",
55
- date_of_bank_holiday: "20061225"
56
- }
49
+ expect(Atco.parse_bank_holiday("QHN20061225")).to eq(
50
+ {
51
+ record_identity: "QH",
52
+ transaction_type: "N",
53
+ date_of_bank_holiday: "20061225"
54
+ }
55
+ )
57
56
  end
58
57
 
59
58
  it "should parse operator" do
60
- expect Atco.parse_operator("QPNTM Translink Metro Translink Metro \r\n") == {
61
- record_identity: "QP",
62
- transaction_type: "N",
63
- operator: "TM",
64
- operator_short_form: "Translink Metro",
65
- operator_legal_name: "Translink Metro"
66
- }
59
+ expect(Atco.parse_operator("QPNTM Translink Metro Translink Metro \r\n")).to eq(
60
+ {
61
+ record_identity: "QP",
62
+ transaction_type: "N",
63
+ operator: "TM",
64
+ operator_short_form: "Translink Metro",
65
+ operator_legal_name: "Translink Metro"
66
+ }
67
+ )
67
68
  end
68
69
 
69
70
  it "should parse additional location information" do
70
- expect Atco.parse_additional_location_info("QBN700000001252 328622 367433 \r\n") == {
71
- record_identity: "QB",
72
- transaction_type: "N",
73
- location: "700000001252",
74
- grid_reference_easting: "328622",
75
- grid_reference_northing: "367433"
76
- }
71
+ expect(Atco.parse_additional_location_info("QBN700000001252 328622 367433 \r\n")).to eq(
72
+ {
73
+ record_identity: "QB",
74
+ transaction_type: "N",
75
+ location: "700000001252",
76
+ grid_reference_easting: "328622",
77
+ grid_reference_northing: "367433"
78
+ }
79
+ )
77
80
  end
78
81
 
79
82
  it "should parse location" do
80
- expect Atco.parse_location("QLN700000001252Conway (River Rd) 1\r\n") == {
81
- record_identity: "QL",
82
- transaction_type: "N",
83
- location: "700000001252",
84
- full_location: "Conway (River Rd)",
85
- gazetteer_code: "1"
86
- }
83
+ expect(Atco.parse_location("QLN700000001252Conway (River Rd) 1\r\n")).to eq(
84
+ {
85
+ record_identity: "QL",
86
+ transaction_type: "N",
87
+ location: "700000001252",
88
+ full_location: "Conway (River Rd)",
89
+ gazetteer_code: "1"
90
+ }
91
+ )
87
92
  end
88
93
 
89
94
  # QT7000000012520605 T1F0
90
95
  it "should parse destination" do
91
- expect Atco.parse_destination("QT7000000012520605 T1F0\r\n") == {
92
- record_identity: "QT",
93
- location: "700000001252",
94
- published_arrival_time: "0605",
95
- bay_number: "",
96
- timing_point_indicator: "T1",
97
- fare_stage_indicator: "F0"
98
- }
96
+ expect(Atco.parse_destination("QT7000000012520605 T1F0\r\n")).to eq(
97
+ {
98
+ record_identity: "QT",
99
+ location: "700000001252",
100
+ published_arrival_time: "0605",
101
+ bay_number: "",
102
+ timing_point_indicator: "T1",
103
+ fare_stage_indicator: "F0"
104
+ }
105
+ )
99
106
  end
100
107
 
101
108
  it "should parse intermediate" do
102
- expect Atco.parse_intermediate("QI70000000125607120712B T1F0\r\n") == {
103
- record_identity: "QI",
104
- location: "700000001256",
105
- published_arrival_time: "0712",
106
- published_departure_time: "0712",
107
- activity_flag: "B",
108
- bay_number: "",
109
- timing_point_indicator: "T1",
110
- fare_stage_indicator: "F0"
111
- }
109
+ expect(Atco.parse_intermediate("QI70000000125607120712B T1F0\r\n")).to eq(
110
+ {
111
+ record_identity: "QI",
112
+ location: "700000001256",
113
+ published_arrival_time: "0712",
114
+ published_departure_time: "0712",
115
+ activity_flag: "B",
116
+ bay_number: "",
117
+ timing_point_indicator: "T1",
118
+ fare_stage_indicator: "F0"
119
+ }
120
+ )
112
121
  end
113
122
 
114
123
  it "should parse origin" do
115
- expect Atco.parse_origin("QO7000000012520730 T1F0\r\n") == {
116
- record_identity: "QO",
117
- location: "700000001252",
118
- published_departure_time: "0730",
119
- bay_number: "",
120
- timing_point_indicator: "T1",
121
- fare_stage_indicator: "F0"
122
- }
124
+ expect(Atco.parse_origin("QO7000000012520730 T1F0\r\n")).to eq(
125
+ {
126
+ record_identity: "QO",
127
+ location: "700000001252",
128
+ published_departure_time: "0730",
129
+ bay_number: "",
130
+ timing_point_indicator: "T1",
131
+ fare_stage_indicator: "F0"
132
+ }
133
+ )
123
134
  end
124
135
 
125
136
  it "should parse journey header" do
126
- expect Atco.parse_journey_header("QSNTM 13986520091005 1111100 9A 9018 0 I\r\n") == {
127
- record_identity: "QS",
128
- transaction_type: "N",
129
- operator: "TM",
130
- unique_journey_identifier: "139865",
131
- first_date_of_operation: "20091005",
132
- last_date_of_operation: "",
133
- operates_on_mondays: "1",
134
- operates_on_tuesdays: "1",
135
- operates_on_wednesdays: "1",
136
- operates_on_thursdays: "1",
137
- operates_on_fridays: "1",
138
- operates_on_saturdays: "0",
139
- operates_on_sundays: "0",
140
- school_term_time: "",
141
- bank_holidays: "",
142
- route_number: "9A",
143
- running_board: "9018",
144
- vehicle_type: "0",
145
- registration_number: "",
146
- route_direction: "I"
147
- }
137
+ expect(Atco.parse_journey_header("QSNTM 13986520091005 1111100 9A 9018 0 I\r\n")).to eq(
138
+ {
139
+ record_identity: "QS",
140
+ transaction_type: "N",
141
+ operator: "TM",
142
+ unique_journey_identifier: "139865",
143
+ first_date_of_operation: "20091005",
144
+ last_date_of_operation: "",
145
+ operates_on_mondays: "1",
146
+ operates_on_tuesdays: "1",
147
+ operates_on_wednesdays: "1",
148
+ operates_on_thursdays: "1",
149
+ operates_on_fridays: "1",
150
+ operates_on_saturdays: "0",
151
+ operates_on_sundays: "0",
152
+ school_term_time: "",
153
+ bank_holidays: "",
154
+ route_number: "9A",
155
+ running_board: "9018",
156
+ vehicle_type: "0",
157
+ registration_number: "",
158
+ route_direction: "I"
159
+ }
160
+ )
148
161
  end
149
162
 
150
- describe "with example.cif" do
163
+ describe "with example.cif" do # rubocop:disable Metrics/BlockLength
151
164
  before(:all) do
152
165
  @atco = Atco.parse("spec/fixtures/example.cif")
153
166
  end
154
167
 
155
168
  it "should parse 1 journey" do
156
- expect @atco[:journeys].size == 1
169
+ expect(@atco[:journeys].size).to eq(1)
157
170
  end
158
171
 
159
172
  it "should parse journeys into Atco::Joruney objects" do
160
173
  expect(@atco[:journeys]["139748"]).to be_a_kind_of(Atco::Journey)
161
174
  end
162
175
 
163
- it "should parse 6 stops for joureny 139748" do
164
- expect @atco[:journeys]["139748"].stops.size == 6
176
+ it "should parse 6 stops for journey 139748" do
177
+ expect(@atco[:journeys]["139748"].stops.size).to eq(6)
165
178
  end
166
179
 
167
- it "should parse 6 stops for joureny 139748" do
168
- expect @atco[:journeys]["139748"].stops.size == 6
180
+ it "should parse 2 locations" do
181
+ expect(@atco[:locations].size).to eq(2)
169
182
  end
170
183
 
171
- it "should parse 2 locations" do
172
- expect @atco[:locations].size == 2
184
+ it "should output file as JSON" do
185
+ output = File.join(File.dirname(__FILE__), "artefacts", "test.json")
186
+ File.open(output, "w+") do |f|
187
+ f.flush
188
+ f.write(JSON.pretty_generate(@atco))
189
+ end
190
+
191
+ expect(File.exist?(output)).to be true
192
+
193
+ data = File.read(output)
194
+ json = JSON.parse(data)
195
+ expect(json).to be_a(Hash)
173
196
  end
174
197
  end
175
198
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rubygems"
4
- require "rspec"
3
+ require "atco"
5
4
 
6
- require "#{File.dirname(__FILE__)}/../lib/atco"
5
+ RSpec.configure do |config|
6
+ # Enable flags like --only-failures and --next-failure
7
+ config.example_status_persistence_file_path = ".rspec_status"
8
+
9
+ # Disable RSpec exposing methods globally on `Module` and `main`
10
+ config.disable_monkey_patching!
11
+
12
+ config.expect_with :rspec do |c|
13
+ c.syntax = :expect
14
+ end
15
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atco
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rice
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-11 00:00:00.000000000 Z
11
+ date: 2024-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake