ruby-irail 0.4.0 → 0.4.1
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.
- data/lib/ruby-irail/packages/nmbs/api.rb +37 -73
- data/lib/ruby-irail/packages/nmbs/parser/{document_parser.rb → xml_parser.rb} +9 -14
- data/lib/version.rb +1 -1
- data/spec/packages/nmbs/api_spec.rb +67 -131
- data/spec/packages/nmbs/parser/{document_parser_spec.rb → xml_parser_spec.rb} +19 -19
- metadata +12 -12
@@ -4,113 +4,77 @@ module IRail::API
|
|
4
4
|
STATIONS_URI = "stations/"
|
5
5
|
CONNECTIONS_URI = "connections/"
|
6
6
|
VEHICLE_URI = "vehicle/"
|
7
|
-
|
7
|
+
DEPARTURES_URI = "liveboard/"
|
8
|
+
ARRIVALS_URI = "liveboard/"
|
8
9
|
|
9
10
|
def stations(options = {})
|
10
|
-
|
11
|
-
xml_station_list = get_station_list(station_list_url, options)
|
12
|
-
IRail::NMBS::DocumentParser.parse_stations(xml_station_list)
|
11
|
+
get_resource(:stations, options)
|
13
12
|
end
|
14
13
|
|
15
14
|
def connections(origin_station, destination_station, options = {})
|
16
|
-
|
17
|
-
|
18
|
-
IRail::NMBS::DocumentParser.parse_connections(xml_connections)
|
15
|
+
options = build_connections_option_hash(origin_station, destination_station, options)
|
16
|
+
get_resource(:connections, options)
|
19
17
|
end
|
20
18
|
|
21
19
|
def vehicle(vehicle_id, options = {})
|
22
|
-
|
23
|
-
|
24
|
-
IRail::NMBS::DocumentParser.parse_vehicle(xml_vehicle)
|
20
|
+
options = build_vehicle_option_hash(vehicle_id, options)
|
21
|
+
get_resource(:vehicle, options)
|
25
22
|
end
|
26
23
|
|
27
24
|
def departures(station_id, options = {})
|
28
|
-
|
29
|
-
|
30
|
-
IRail::NMBS::DocumentParser.parse_liveboard(xml_departures)
|
25
|
+
options = build_departures_option_hash(station_id, options)
|
26
|
+
get_resource(:departures, options)
|
31
27
|
end
|
32
28
|
|
33
29
|
def arrivals(station_id, options = {})
|
34
|
-
|
35
|
-
|
36
|
-
IRail::NMBS::DocumentParser.parse_liveboard(xml_arrivals)
|
37
|
-
end
|
38
|
-
|
39
|
-
def get_station_list(station_list_url, options = {})
|
40
|
-
options = { :query => options } if options.any?
|
41
|
-
IRail::Request.get(station_list_url, options)
|
42
|
-
end
|
43
|
-
|
44
|
-
def get_connections(connections_url, origin_station, destination_station, options = {})
|
45
|
-
options = build_connections_option_hash(origin_station, destination_station, options)
|
46
|
-
IRail::Request.get(connections_url, options)
|
30
|
+
options = build_arrivals_option_hash(station_id, options)
|
31
|
+
get_resource(:arrivals, options)
|
47
32
|
end
|
48
33
|
|
49
|
-
def
|
50
|
-
|
51
|
-
|
34
|
+
def get_resource(resource, options)
|
35
|
+
uri = IRail::API::NMBS.const_get("#{resource.upcase}_URI")
|
36
|
+
url = build_url(uri)
|
37
|
+
xml = call_api(url, options)
|
38
|
+
IRail::NMBS::XMLParser.send("parse_#{resource}", xml)
|
52
39
|
end
|
53
40
|
|
54
|
-
def
|
55
|
-
options =
|
56
|
-
IRail::Request.get(
|
41
|
+
def call_api(url, options = {})
|
42
|
+
options = build_query_options_hash(options)
|
43
|
+
IRail::Request.get(url, options)
|
57
44
|
end
|
58
45
|
|
59
|
-
|
60
|
-
|
61
|
-
|
46
|
+
private
|
47
|
+
def build_query_options_hash(options)
|
48
|
+
{ :query => options }
|
62
49
|
end
|
63
50
|
|
64
|
-
private
|
65
51
|
def build_connections_option_hash(origin_station, destination_station, options = {})
|
66
|
-
{
|
67
|
-
:
|
68
|
-
|
69
|
-
|
70
|
-
})
|
71
|
-
}
|
52
|
+
options.merge({
|
53
|
+
:from => origin_station.name,
|
54
|
+
:to => destination_station.name
|
55
|
+
})
|
72
56
|
end
|
73
57
|
|
74
58
|
def build_vehicle_option_hash(vehicle_id, options = {})
|
75
|
-
{
|
76
|
-
:query => options.merge({
|
77
|
-
:id => vehicle_id
|
78
|
-
})
|
79
|
-
}
|
59
|
+
options.merge({ :id => vehicle_id })
|
80
60
|
end
|
81
61
|
|
82
62
|
def build_departures_option_hash(station_id, options = {})
|
83
|
-
{
|
84
|
-
:
|
85
|
-
|
86
|
-
|
87
|
-
})
|
88
|
-
}
|
63
|
+
options.merge({
|
64
|
+
:id => station_id,
|
65
|
+
:arrdep => "DEP"
|
66
|
+
})
|
89
67
|
end
|
90
68
|
|
91
69
|
def build_arrivals_option_hash(station_id, options = {})
|
92
|
-
{
|
93
|
-
:
|
94
|
-
|
95
|
-
|
96
|
-
})
|
97
|
-
}
|
98
|
-
end
|
99
|
-
|
100
|
-
def build_station_list_url
|
101
|
-
[API_URL, STATIONS_URI].join('/')
|
102
|
-
end
|
103
|
-
|
104
|
-
def build_connections_url
|
105
|
-
[API_URL, CONNECTIONS_URI].join('/')
|
106
|
-
end
|
107
|
-
|
108
|
-
def build_vehicle_url
|
109
|
-
[API_URL, VEHICLE_URI].join('/')
|
70
|
+
options.merge({
|
71
|
+
:id => station_id,
|
72
|
+
:arrdep => "ARR"
|
73
|
+
})
|
110
74
|
end
|
111
75
|
|
112
|
-
def
|
113
|
-
[API_URL,
|
76
|
+
def build_url(uri)
|
77
|
+
[API_URL, uri].join('/')
|
114
78
|
end
|
115
79
|
end
|
116
80
|
end
|
@@ -1,23 +1,23 @@
|
|
1
1
|
module IRail::NMBS
|
2
|
-
class
|
2
|
+
class XMLParser
|
3
3
|
STATION_XPATH = "//station"
|
4
4
|
CONNECTION_XPATH = "//connection"
|
5
5
|
VEHICLE_XPATH = "//vehicleinformation"
|
6
6
|
|
7
7
|
def self.parse_stations(xml_string)
|
8
|
-
|
8
|
+
xml_payload(xml_string, STATION_XPATH).inject([]) do |stations, xml_station|
|
9
9
|
stations << IRail::NMBS::Station.from_xml(xml_station.to_s)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.parse_connections(xml_string)
|
14
|
-
|
14
|
+
xml_payload(xml_string, CONNECTION_XPATH).inject([]) do |connections, xml_connection|
|
15
15
|
connections << IRail::NMBS::Connection.from_xml(xml_connection.to_s)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.parse_vehicle(xml_string)
|
20
|
-
vehicle =
|
20
|
+
vehicle = xml_payload(xml_string, VEHICLE_XPATH)
|
21
21
|
IRail::NMBS::VehicleInformation.from_xml(vehicle.to_s)
|
22
22
|
end
|
23
23
|
|
@@ -25,19 +25,14 @@ module IRail::NMBS
|
|
25
25
|
IRail::NMBS::Liveboard.from_xml(xml_string)
|
26
26
|
end
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.xml_stations(xml_string)
|
34
|
-
xml_payload = Nokogiri::XML(xml_string)
|
35
|
-
xml_payload.xpath(STATION_XPATH)
|
28
|
+
class << self
|
29
|
+
alias :parse_departures :parse_liveboard
|
30
|
+
alias :parse_arrivals :parse_liveboard
|
36
31
|
end
|
37
32
|
|
38
|
-
def self.
|
33
|
+
def self.xml_payload(xml_string, xpath)
|
39
34
|
xml_payload = Nokogiri::XML(xml_string)
|
40
|
-
xml_payload.xpath(
|
35
|
+
xml_payload.xpath(xpath)
|
41
36
|
end
|
42
37
|
end
|
43
38
|
end
|
data/lib/version.rb
CHANGED
@@ -9,21 +9,28 @@ describe IRail::API::NMBS do
|
|
9
9
|
let(:connections_url) { mock("Connections url") }
|
10
10
|
let(:xml_connections) { mock("Xml connections") }
|
11
11
|
let(:connections) { mock("Connections") }
|
12
|
+
let(:connections_options) { mock("Connections options") }
|
12
13
|
let(:options) { mock("Options") }
|
13
14
|
|
14
15
|
before :each do
|
15
|
-
irail.stub(:
|
16
|
-
irail.stub(:
|
17
|
-
|
16
|
+
irail.stub(:build_url => connections_url)
|
17
|
+
irail.stub(:call_api => xml_connections)
|
18
|
+
irail.stub(:build_connections_option_hash => connections_options)
|
19
|
+
IRail::NMBS::XMLParser.stub(:parse_connections => connections)
|
18
20
|
end
|
19
21
|
|
20
22
|
it "builds the connections url" do
|
21
|
-
irail.should_receive(:
|
23
|
+
irail.should_receive(:build_url).with(IRail::API::NMBS::CONNECTIONS_URI)
|
22
24
|
irail.connections(origin_station, destination_station)
|
23
25
|
end
|
24
26
|
|
27
|
+
it "builds the connections options" do
|
28
|
+
irail.should_receive(:build_connections_option_hash).with(origin_station, destination_station, options)
|
29
|
+
irail.connections(origin_station, destination_station, options)
|
30
|
+
end
|
31
|
+
|
25
32
|
it "gets the connections" do
|
26
|
-
irail.should_receive(:
|
33
|
+
irail.should_receive(:call_api).with(connections_url, connections_options)
|
27
34
|
irail.connections(origin_station, destination_station, options)
|
28
35
|
end
|
29
36
|
|
@@ -33,25 +40,32 @@ describe IRail::API::NMBS do
|
|
33
40
|
end
|
34
41
|
|
35
42
|
describe :vehicle do
|
36
|
-
let(:vehicle_id)
|
37
|
-
let(:vehicle_url)
|
38
|
-
let(:xml_vehicle)
|
39
|
-
let(:vehicle)
|
40
|
-
let(:options)
|
43
|
+
let(:vehicle_id) { mock("Vehicle id") }
|
44
|
+
let(:vehicle_url) { mock("Vehicle url") }
|
45
|
+
let(:xml_vehicle) { mock("Xml vehicle") }
|
46
|
+
let(:vehicle) { mock("vehicle") }
|
47
|
+
let(:options) { mock("Options") }
|
48
|
+
let(:vehicle_options) { mock("Vehicle options") }
|
41
49
|
|
42
50
|
before :each do
|
43
|
-
irail.stub(:
|
44
|
-
irail.stub(:
|
45
|
-
|
51
|
+
irail.stub(:build_url => vehicle_url)
|
52
|
+
irail.stub(:call_api => xml_vehicle)
|
53
|
+
irail.stub(:build_vehicle_option_hash => vehicle_options)
|
54
|
+
IRail::NMBS::XMLParser.stub(:parse_vehicle => vehicle)
|
46
55
|
end
|
47
56
|
|
48
57
|
it "builds the vehicle url" do
|
49
|
-
irail.should_receive(:
|
58
|
+
irail.should_receive(:build_url).with(IRail::API::NMBS::VEHICLE_URI)
|
50
59
|
irail.vehicle(vehicle_id)
|
51
60
|
end
|
52
61
|
|
62
|
+
it "builds the vehicle options" do
|
63
|
+
irail.should_receive(:build_vehicle_option_hash).with(vehicle_id, options)
|
64
|
+
irail.vehicle(vehicle_id, options)
|
65
|
+
end
|
66
|
+
|
53
67
|
it "gets the vehicle" do
|
54
|
-
irail.should_receive(:
|
68
|
+
irail.should_receive(:call_api).with(vehicle_url, vehicle_options)
|
55
69
|
irail.vehicle(vehicle_id, options)
|
56
70
|
end
|
57
71
|
|
@@ -67,18 +81,18 @@ describe IRail::API::NMBS do
|
|
67
81
|
let(:options) { mock("Options") }
|
68
82
|
|
69
83
|
before :each do
|
70
|
-
irail.stub(:
|
71
|
-
irail.stub(:
|
72
|
-
IRail::NMBS::
|
84
|
+
irail.stub(:build_url => station_list_url)
|
85
|
+
irail.stub(:call_api => xml_station_list)
|
86
|
+
IRail::NMBS::XMLParser.stub(:parse_stations => stations)
|
73
87
|
end
|
74
88
|
|
75
89
|
it "builds the station list url" do
|
76
|
-
irail.should_receive(:
|
90
|
+
irail.should_receive(:build_url).with(IRail::API::NMBS::STATIONS_URI)
|
77
91
|
irail.stations(options)
|
78
92
|
end
|
79
93
|
|
80
94
|
it "gets the xml station list" do
|
81
|
-
irail.should_receive(:
|
95
|
+
irail.should_receive(:call_api).with(station_list_url, options)
|
82
96
|
irail.stations(options)
|
83
97
|
end
|
84
98
|
|
@@ -93,20 +107,27 @@ describe IRail::API::NMBS do
|
|
93
107
|
let(:options) { mock("Options") }
|
94
108
|
let(:liveboard) { mock("Liveboard") }
|
95
109
|
let(:xml_departures) { mock("Xml departures") }
|
110
|
+
let(:departures_options) { mock("Departures options") }
|
96
111
|
|
97
112
|
before :each do
|
98
|
-
irail.stub(:
|
99
|
-
irail.stub(:
|
100
|
-
|
113
|
+
irail.stub(:build_url => liveboard_url)
|
114
|
+
irail.stub(:call_api => xml_departures)
|
115
|
+
irail.stub(:build_departures_option_hash => departures_options)
|
116
|
+
IRail::NMBS::XMLParser.stub(:parse_departures => liveboard)
|
101
117
|
end
|
102
118
|
|
103
119
|
it "builds the liveboard url" do
|
104
|
-
irail.should_receive(:
|
120
|
+
irail.should_receive(:build_url).with(IRail::API::NMBS::DEPARTURES_URI)
|
121
|
+
irail.departures(station_id, options)
|
122
|
+
end
|
123
|
+
|
124
|
+
it "builds the departures options" do
|
125
|
+
irail.should_receive(:build_departures_option_hash).with(station_id, options)
|
105
126
|
irail.departures(station_id, options)
|
106
127
|
end
|
107
128
|
|
108
129
|
it "gets the departures xml" do
|
109
|
-
irail.should_receive(:
|
130
|
+
irail.should_receive(:call_api).with(liveboard_url, departures_options)
|
110
131
|
irail.departures(station_id, options)
|
111
132
|
end
|
112
133
|
|
@@ -121,20 +142,27 @@ describe IRail::API::NMBS do
|
|
121
142
|
let(:options) { mock("Options") }
|
122
143
|
let(:liveboard) { mock("Liveboard") }
|
123
144
|
let(:xml_arrivals) { mock("Xml arrivals") }
|
145
|
+
let(:arrivals_options) { mock("Arrivals options") }
|
124
146
|
|
125
147
|
before :each do
|
126
|
-
irail.stub(:
|
127
|
-
irail.stub(:
|
128
|
-
|
148
|
+
irail.stub(:build_url => liveboard_url)
|
149
|
+
irail.stub(:call_api => xml_arrivals)
|
150
|
+
irail.stub(:build_arrivals_option_hash => arrivals_options)
|
151
|
+
IRail::NMBS::XMLParser.stub(:parse_arrivals => liveboard)
|
129
152
|
end
|
130
153
|
|
131
154
|
it "builds the liveboard url" do
|
132
|
-
irail.should_receive(:
|
155
|
+
irail.should_receive(:build_url).with(IRail::API::NMBS::ARRIVALS_URI)
|
156
|
+
irail.arrivals(station_id, options)
|
157
|
+
end
|
158
|
+
|
159
|
+
it "builds the departures options" do
|
160
|
+
irail.should_receive(:build_arrivals_option_hash).with(station_id, options)
|
133
161
|
irail.arrivals(station_id, options)
|
134
162
|
end
|
135
163
|
|
136
164
|
it "gets the arrivals xml" do
|
137
|
-
irail.should_receive(:
|
165
|
+
irail.should_receive(:call_api).with(liveboard_url, arrivals_options)
|
138
166
|
irail.arrivals(station_id, options)
|
139
167
|
end
|
140
168
|
|
@@ -143,121 +171,29 @@ describe IRail::API::NMBS do
|
|
143
171
|
end
|
144
172
|
end
|
145
173
|
|
146
|
-
describe :
|
147
|
-
let(:
|
148
|
-
let(:destination_station) { mock("Destination station") }
|
149
|
-
let(:connections_url) { mock("Connections url") }
|
150
|
-
let(:options_hash) { mock("Options hash") }
|
151
|
-
let(:response) { mock("Response") }
|
152
|
-
let(:options) { mock("Oprions") }
|
153
|
-
|
154
|
-
before :each do
|
155
|
-
irail.stub(:build_connections_option_hash => options_hash)
|
156
|
-
IRail::Request.stub(:get => response)
|
157
|
-
end
|
158
|
-
|
159
|
-
it "builds the options hash" do
|
160
|
-
irail.should_receive(:build_connections_option_hash).with(origin_station, destination_station, options)
|
161
|
-
irail.get_connections(connections_url, origin_station, destination_station, options)
|
162
|
-
end
|
163
|
-
|
164
|
-
it "calls the connections url through a get request" do
|
165
|
-
IRail::Request.should_receive(:get).with(connections_url, options_hash)
|
166
|
-
irail.get_connections(connections_url, origin_station, destination_station)
|
167
|
-
end
|
168
|
-
|
169
|
-
it "returns the response" do
|
170
|
-
irail.get_connections(connections_url, origin_station, destination_station).should eql response
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
|
-
describe :get_departures do
|
175
|
-
let(:station_id) { mock("Station id") }
|
176
|
-
let(:options) { mock("Options") }
|
177
|
-
let(:liveboard_url) { mock("Liveboard url") }
|
174
|
+
describe :call_api do
|
175
|
+
let(:url) { mock("Connections url") }
|
178
176
|
let(:options_hash) { mock("Options hash") }
|
179
177
|
let(:response) { mock("Response") }
|
178
|
+
let(:options) { mock("Oprions") }
|
180
179
|
|
181
180
|
before :each do
|
182
|
-
irail.stub(:
|
181
|
+
irail.stub(:build_query_options_hash => options_hash)
|
183
182
|
IRail::Request.stub(:get => response)
|
184
183
|
end
|
185
184
|
|
186
185
|
it "builds the options hash" do
|
187
|
-
irail.should_receive(:
|
188
|
-
irail.
|
186
|
+
irail.should_receive(:build_query_options_hash).with(options)
|
187
|
+
irail.call_api(url, options)
|
189
188
|
end
|
190
189
|
|
191
190
|
it "calls the connections url through a get request" do
|
192
|
-
IRail::Request.should_receive(:get).with(
|
193
|
-
irail.
|
191
|
+
IRail::Request.should_receive(:get).with(url, options_hash)
|
192
|
+
irail.call_api(url, options)
|
194
193
|
end
|
195
194
|
|
196
195
|
it "returns the response" do
|
197
|
-
irail.
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
describe :get_arrivals do
|
202
|
-
let(:station_id) { mock("Station id") }
|
203
|
-
let(:options) { mock("Options") }
|
204
|
-
let(:liveboard_url) { mock("Liveboard url") }
|
205
|
-
let(:options_hash) { mock("Options hash") }
|
206
|
-
let(:response) { mock("Response") }
|
207
|
-
|
208
|
-
before :each do
|
209
|
-
irail.stub(:build_arrivals_option_hash => options_hash)
|
210
|
-
IRail::Request.stub(:get => response)
|
211
|
-
end
|
212
|
-
|
213
|
-
it "builds the options hash" do
|
214
|
-
irail.should_receive(:build_arrivals_option_hash).with(station_id, options)
|
215
|
-
irail.get_arrivals(liveboard_url, station_id, options)
|
216
|
-
end
|
217
|
-
|
218
|
-
it "calls the connections url through a get request" do
|
219
|
-
IRail::Request.should_receive(:get).with(liveboard_url, options_hash)
|
220
|
-
irail.get_arrivals(liveboard_url, station_id, options)
|
221
|
-
end
|
222
|
-
|
223
|
-
it "returns the response" do
|
224
|
-
irail.get_arrivals(liveboard_url, station_id, options).should eql response
|
225
|
-
end
|
226
|
-
end
|
227
|
-
|
228
|
-
describe :get_station_list do
|
229
|
-
let(:url) { mock("Url") }
|
230
|
-
let(:response) { mock("Response") }
|
231
|
-
|
232
|
-
before :each do
|
233
|
-
IRail::Request.stub(:get => response)
|
234
|
-
end
|
235
|
-
|
236
|
-
context "when there are no options" do
|
237
|
-
let(:options) { {} }
|
238
|
-
|
239
|
-
it "calls the station list url through a get request" do
|
240
|
-
IRail::Request.should_receive(:get).with(url, options)
|
241
|
-
irail.get_station_list(url, options)
|
242
|
-
end
|
243
|
-
|
244
|
-
it "returns the response" do
|
245
|
-
irail.get_station_list(url, options).should eql response
|
246
|
-
end
|
247
|
-
end
|
248
|
-
|
249
|
-
context "when there are options" do
|
250
|
-
let(:options) { {:a => 1} }
|
251
|
-
|
252
|
-
it "calls the station list url with query options" do
|
253
|
-
expected_options = { :query => options }
|
254
|
-
IRail::Request.should_receive(:get).with(url, expected_options)
|
255
|
-
irail.get_station_list(url, options)
|
256
|
-
end
|
257
|
-
|
258
|
-
it "returns the response" do
|
259
|
-
irail.get_station_list(url, options).should eql response
|
260
|
-
end
|
196
|
+
irail.call_api(url, options).should eql response
|
261
197
|
end
|
262
198
|
end
|
263
199
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require_relative "../../../../lib/ruby-irail/packages/nmbs/parser/
|
1
|
+
require_relative "../../../../lib/ruby-irail/packages/nmbs/parser/xml_parser.rb"
|
2
2
|
|
3
|
-
describe IRail::NMBS::
|
3
|
+
describe IRail::NMBS::XMLParser do
|
4
4
|
module Nokogiri
|
5
5
|
module XML
|
6
6
|
end
|
@@ -28,23 +28,23 @@ describe IRail::NMBS::DocumentParser do
|
|
28
28
|
|
29
29
|
it "gets the xml payload from the string passed as parameter" do
|
30
30
|
Nokogiri.should_receive(:XML).with(xml_string)
|
31
|
-
IRail::NMBS::
|
31
|
+
IRail::NMBS::XMLParser.parse_stations(xml_string)
|
32
32
|
end
|
33
33
|
|
34
34
|
it "extracts the stations from the xml payload" do
|
35
|
-
xml_payload.should_receive(:xpath).with(IRail::NMBS::
|
36
|
-
IRail::NMBS::
|
35
|
+
xml_payload.should_receive(:xpath).with(IRail::NMBS::XMLParser::STATION_XPATH)
|
36
|
+
IRail::NMBS::XMLParser.parse_stations(xml_string)
|
37
37
|
end
|
38
38
|
|
39
39
|
it "creates a new station for all parsed station attributes" do
|
40
40
|
stations.each do |station|
|
41
41
|
IRail::NMBS::Station.should_receive(:from_xml).with(station.to_s)
|
42
42
|
end
|
43
|
-
IRail::NMBS::
|
43
|
+
IRail::NMBS::XMLParser.parse_stations(xml_string)
|
44
44
|
end
|
45
45
|
|
46
46
|
it "returns as many stations as in the xml payload" do
|
47
|
-
IRail::NMBS::
|
47
|
+
IRail::NMBS::XMLParser.parse_stations(xml_string).size.should eql stations.size
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -61,23 +61,23 @@ describe IRail::NMBS::DocumentParser do
|
|
61
61
|
|
62
62
|
it "gets the xml payload from the string passed as parameter" do
|
63
63
|
Nokogiri.should_receive(:XML).with(xml_string)
|
64
|
-
IRail::NMBS::
|
64
|
+
IRail::NMBS::XMLParser.parse_connections(xml_string)
|
65
65
|
end
|
66
66
|
|
67
67
|
it "extracts the connections from the xml payload" do
|
68
|
-
xml_payload.should_receive(:xpath).with(IRail::NMBS::
|
69
|
-
IRail::NMBS::
|
68
|
+
xml_payload.should_receive(:xpath).with(IRail::NMBS::XMLParser::CONNECTION_XPATH)
|
69
|
+
IRail::NMBS::XMLParser.parse_connections(xml_string)
|
70
70
|
end
|
71
71
|
|
72
72
|
it "creates a new connection for all parsed connection attributes" do
|
73
73
|
connections.each do |connection|
|
74
74
|
IRail::NMBS::Connection.should_receive(:from_xml).with(connection.to_s)
|
75
75
|
end
|
76
|
-
IRail::NMBS::
|
76
|
+
IRail::NMBS::XMLParser.parse_connections(xml_string)
|
77
77
|
end
|
78
78
|
|
79
79
|
it "returns as many connections as in the xml payload" do
|
80
|
-
IRail::NMBS::
|
80
|
+
IRail::NMBS::XMLParser.parse_connections(xml_string).size.should eql connections.size
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
@@ -95,21 +95,21 @@ describe IRail::NMBS::DocumentParser do
|
|
95
95
|
|
96
96
|
it "gets the xml payload from the string passed as parameter" do
|
97
97
|
Nokogiri.should_receive(:XML).with(xml_string)
|
98
|
-
IRail::NMBS::
|
98
|
+
IRail::NMBS::XMLParser.parse_vehicle(xml_string)
|
99
99
|
end
|
100
100
|
|
101
101
|
it "extracts the vehicle from the xml payload" do
|
102
|
-
xml_payload.should_receive(:xpath).with(IRail::NMBS::
|
103
|
-
IRail::NMBS::
|
102
|
+
xml_payload.should_receive(:xpath).with(IRail::NMBS::XMLParser::VEHICLE_XPATH)
|
103
|
+
IRail::NMBS::XMLParser.parse_vehicle(xml_string)
|
104
104
|
end
|
105
105
|
|
106
106
|
it "creates a new vehicle for the parsed vehicle attributes" do
|
107
107
|
IRail::NMBS::VehicleInformation.should_receive(:from_xml).with(vehicle.to_s)
|
108
|
-
IRail::NMBS::
|
108
|
+
IRail::NMBS::XMLParser.parse_vehicle(xml_string)
|
109
109
|
end
|
110
110
|
|
111
111
|
it "returns a vehicule instance" do
|
112
|
-
IRail::NMBS::
|
112
|
+
IRail::NMBS::XMLParser.parse_vehicle(xml_string).should eql vehicle_instance
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
@@ -124,11 +124,11 @@ describe IRail::NMBS::DocumentParser do
|
|
124
124
|
|
125
125
|
it "creates a liveboard from the xml payload" do
|
126
126
|
IRail::NMBS::Liveboard.should_receive(:from_xml).with(xml_string)
|
127
|
-
IRail::NMBS::
|
127
|
+
IRail::NMBS::XMLParser.parse_liveboard(xml_string)
|
128
128
|
end
|
129
129
|
|
130
130
|
it "returns a liveboard instance" do
|
131
|
-
IRail::NMBS::
|
131
|
+
IRail::NMBS::XMLParser.parse_liveboard(xml_string).should eql liveboard_instance
|
132
132
|
end
|
133
133
|
end
|
134
134
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-irail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-07-19 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70350038980380 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70350038980380
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: httparty
|
27
|
-
requirement: &
|
27
|
+
requirement: &70350038979960 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70350038979960
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: roxml
|
38
|
-
requirement: &
|
38
|
+
requirement: &70350038979540 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70350038979540
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: nokogiri
|
49
|
-
requirement: &
|
49
|
+
requirement: &70350038979120 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70350038979120
|
58
58
|
description: IRail makes Belgian railway schedule easily available for anyone. This
|
59
59
|
is a Ruby wrapper for their API.
|
60
60
|
email:
|
@@ -89,7 +89,7 @@ files:
|
|
89
89
|
- lib/ruby-irail/packages/nmbs/models/vehicle.rb
|
90
90
|
- lib/ruby-irail/packages/nmbs/models/vehicle_information.rb
|
91
91
|
- lib/ruby-irail/packages/nmbs/models/vehicle_trip.rb
|
92
|
-
- lib/ruby-irail/packages/nmbs/parser/
|
92
|
+
- lib/ruby-irail/packages/nmbs/parser/xml_parser.rb
|
93
93
|
- lib/version.rb
|
94
94
|
- ruby-irail.gemspec
|
95
95
|
- spec/http/request_spec.rb
|
@@ -109,7 +109,7 @@ files:
|
|
109
109
|
- spec/packages/nmbs/models/vehicle_information_spec.rb
|
110
110
|
- spec/packages/nmbs/models/vehicle_spec.rb
|
111
111
|
- spec/packages/nmbs/models/vehicle_trip_spec.rb
|
112
|
-
- spec/packages/nmbs/parser/
|
112
|
+
- spec/packages/nmbs/parser/xml_parser_spec.rb
|
113
113
|
homepage: https://github.com/mlainez/ruby-irail
|
114
114
|
licenses: []
|
115
115
|
post_install_message:
|
@@ -152,4 +152,4 @@ test_files:
|
|
152
152
|
- spec/packages/nmbs/models/vehicle_information_spec.rb
|
153
153
|
- spec/packages/nmbs/models/vehicle_spec.rb
|
154
154
|
- spec/packages/nmbs/models/vehicle_trip_spec.rb
|
155
|
-
- spec/packages/nmbs/parser/
|
155
|
+
- spec/packages/nmbs/parser/xml_parser_spec.rb
|