ruby-irail 0.2.0 → 0.2.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.
@@ -4,37 +4,35 @@ module IRail::API
4
4
  STATIONS_URI = "stations/"
5
5
  CONNECTIONS_URI = "connections/"
6
6
 
7
- def stations
8
- @stations ||= get_stations
7
+ def stations(options = {})
8
+ station_list_url = build_station_list_url
9
+ xml_station_list = get_station_list(station_list_url, options)
10
+ IRail::NMBS::DocumentParser.parse_stations(xml_station_list)
9
11
  end
10
12
 
11
- def connections(origin_station, destination_station)
13
+ def connections(origin_station, destination_station, options = {})
12
14
  connections_url = build_connections_url
13
- xml_connections = get_connections(connections_url, origin_station, destination_station)
15
+ xml_connections = get_connections(connections_url, origin_station, destination_station, options)
14
16
  IRail::NMBS::DocumentParser.parse_connections(xml_connections)
15
17
  end
16
18
 
17
- def get_stations
18
- station_list_url = build_station_list_url
19
- xml_station_list = get_station_list(station_list_url)
20
- IRail::NMBS::DocumentParser.parse_stations(xml_station_list)
21
- end
22
-
23
- def get_connections(connections_url, origin_station, destination_station)
24
- options = build_connections_option_hash(origin_station, destination_station)
19
+ def get_connections(connections_url, origin_station, destination_station, options = {})
20
+ options = build_connections_option_hash(origin_station, destination_station, options)
25
21
  IRail::Request.get(connections_url, options)
26
22
  end
27
23
 
28
- def get_station_list(station_list_url)
29
- IRail::Request.get(station_list_url)
24
+ def get_station_list(station_list_url, options = {})
25
+ options = { :query => options } if options.any?
26
+ IRail::Request.get(station_list_url, options)
30
27
  end
31
28
 
32
29
  private
33
- def build_connections_option_hash(origin_station, destination_station)
30
+ def build_connections_option_hash(origin_station, destination_station, options = {})
34
31
  {
35
- :query => {
32
+ :query => options.merge({
36
33
  :from => origin_station.name,
37
- :to => destination_station.name }
34
+ :to => destination_station.name
35
+ })
38
36
  }
39
37
  end
40
38
 
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module IRail
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -3,37 +3,13 @@ require_relative "../../../lib/ruby-irail/packages/nmbs/api.rb"
3
3
  describe IRail::API::NMBS do
4
4
  let(:irail) { IRail::API::NMBS.new }
5
5
 
6
- describe :stations do
7
- let(:stations) { mock("Stations") }
8
- let(:fetched_stations) { mock("Fetched stations") }
9
-
10
- before :each do
11
- irail.stub(:get_stations => fetched_stations)
12
- end
13
-
14
- it "returns the stations when they were already fetched" do
15
- irail.instance_variable_set(:@stations, stations)
16
- irail.stations.should eql stations
17
- end
18
-
19
- context "when stations have not been fetched yet" do
20
- it "fetches them" do
21
- irail.should_receive(:get_stations)
22
- irail.stations
23
- end
24
-
25
- it "returns them" do
26
- irail.stations.should eql fetched_stations
27
- end
28
- end
29
- end
30
-
31
6
  describe :connections do
32
7
  let(:origin_station) { mock("Origin station") }
33
8
  let(:destination_station) { mock("Destination station") }
34
9
  let(:connections_url) { mock("Connections url") }
35
10
  let(:xml_connections) { mock("Xml connections") }
36
11
  let(:connections) { mock("Connections") }
12
+ let(:options) { mock("Options") }
37
13
 
38
14
  before :each do
39
15
  irail.stub(:build_connections_url => connections_url)
@@ -47,8 +23,8 @@ describe IRail::API::NMBS do
47
23
  end
48
24
 
49
25
  it "gets the connections" do
50
- irail.should_receive(:get_connections).with(connections_url, origin_station, destination_station)
51
- irail.connections(origin_station, destination_station)
26
+ irail.should_receive(:get_connections).with(connections_url, origin_station, destination_station, options)
27
+ irail.connections(origin_station, destination_station, options)
52
28
  end
53
29
 
54
30
  it "returns the parsed connections" do
@@ -56,10 +32,11 @@ describe IRail::API::NMBS do
56
32
  end
57
33
  end
58
34
 
59
- describe :get_stations do
35
+ describe :stations do
60
36
  let(:station_list_url) { mock("Url") }
61
37
  let(:xml_station_list) { mock("Xml station list") }
62
38
  let(:stations) { mock("Stations") }
39
+ let(:options) { mock("Options") }
63
40
 
64
41
  before :each do
65
42
  irail.stub(:build_station_list_url => station_list_url)
@@ -69,16 +46,16 @@ describe IRail::API::NMBS do
69
46
 
70
47
  it "builds the station list url" do
71
48
  irail.should_receive(:build_station_list_url)
72
- irail.get_stations
49
+ irail.stations(options)
73
50
  end
74
51
 
75
52
  it "gets the xml station list" do
76
- irail.should_receive(:get_station_list).with(station_list_url)
77
- irail.get_stations
53
+ irail.should_receive(:get_station_list).with(station_list_url, options)
54
+ irail.stations(options)
78
55
  end
79
56
 
80
57
  it "returns the parsed stations" do
81
- irail.get_stations.should eql stations
58
+ irail.stations(options).should eql stations
82
59
  end
83
60
  end
84
61
 
@@ -88,6 +65,7 @@ describe IRail::API::NMBS do
88
65
  let(:connections_url) { mock("Connections url") }
89
66
  let(:options_hash) { mock("Options hash") }
90
67
  let(:response) { mock("Response") }
68
+ let(:options) { mock("Oprions") }
91
69
 
92
70
  before :each do
93
71
  irail.stub(:build_connections_option_hash => options_hash)
@@ -95,8 +73,8 @@ describe IRail::API::NMBS do
95
73
  end
96
74
 
97
75
  it "builds the options hash" do
98
- irail.should_receive(:build_connections_option_hash).with(origin_station, destination_station)
99
- irail.get_connections(connections_url, origin_station, destination_station)
76
+ irail.should_receive(:build_connections_option_hash).with(origin_station, destination_station, options)
77
+ irail.get_connections(connections_url, origin_station, destination_station, options)
100
78
  end
101
79
 
102
80
  it "calls the connections url through a get request" do
@@ -117,13 +95,31 @@ describe IRail::API::NMBS do
117
95
  IRail::Request.stub(:get => response)
118
96
  end
119
97
 
120
- it "calls the station list url through a get request" do
121
- IRail::Request.should_receive(:get).with(url)
122
- irail.get_station_list(url)
98
+ context "when there are no options" do
99
+ let(:options) { {} }
100
+
101
+ it "calls the station list url through a get request" do
102
+ IRail::Request.should_receive(:get).with(url, options)
103
+ irail.get_station_list(url, options)
104
+ end
105
+
106
+ it "returns the response" do
107
+ irail.get_station_list(url, options).should eql response
108
+ end
123
109
  end
124
110
 
125
- it "returns the response" do
126
- irail.get_station_list(url).should eql response
111
+ context "when there are options" do
112
+ let(:options) { {:a => 1} }
113
+
114
+ it "calls the station list url with query options" do
115
+ expected_options = { :query => options }
116
+ IRail::Request.should_receive(:get).with(url, expected_options)
117
+ irail.get_station_list(url, options)
118
+ end
119
+
120
+ it "returns the response" do
121
+ irail.get_station_list(url, options).should eql response
122
+ end
127
123
  end
128
124
  end
129
125
  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.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-07-18 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70337783379580 !ruby/object:Gem::Requirement
16
+ requirement: &70214013650340 !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: *70337783379580
24
+ version_requirements: *70214013650340
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: httparty
27
- requirement: &70337783379160 !ruby/object:Gem::Requirement
27
+ requirement: &70214013649860 !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: *70337783379160
35
+ version_requirements: *70214013649860
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: roxml
38
- requirement: &70337783378700 !ruby/object:Gem::Requirement
38
+ requirement: &70214013649380 !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: *70337783378700
46
+ version_requirements: *70214013649380
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: nokogiri
49
- requirement: &70337783378280 !ruby/object:Gem::Requirement
49
+ requirement: &70214013648800 !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: *70337783378280
57
+ version_requirements: *70214013648800
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: