ideal_postcodes 0.1.1 → 2.0.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.
Files changed (54) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ci.yml +22 -0
  3. data/CHANGELOG.md +20 -0
  4. data/LICENSE +21 -0
  5. data/README.md +289 -43
  6. data/Rakefile +13 -6
  7. data/ideal-postcodes-ruby.gemspec +11 -11
  8. data/lib/ideal_postcodes.rb +1 -1
  9. data/lib/idealpostcodes/address.rb +31 -0
  10. data/lib/idealpostcodes/errors.rb +31 -26
  11. data/lib/idealpostcodes/key.rb +14 -0
  12. data/lib/idealpostcodes/postcode.rb +20 -32
  13. data/lib/idealpostcodes/util.rb +38 -25
  14. data/lib/idealpostcodes/version.rb +2 -2
  15. data/lib/idealpostcodes.rb +114 -81
  16. data/spec/addresses_spec.rb +68 -0
  17. data/spec/idealpostcodes_spec.rb +56 -0
  18. data/spec/keys_spec.rb +25 -0
  19. data/spec/postcodes_spec.rb +77 -0
  20. data/spec/spec_helper.rb +89 -0
  21. data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_invalid_key.yml +42 -0
  22. data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_limit_breached.yml +42 -0
  23. data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_no_lookups_remaining.yml +42 -0
  24. data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_returns_an_address_for_a_valid_UDPRN.yml +74 -0
  25. data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_returns_nil_for_an_invalid_UDPRN.yml +42 -0
  26. data/spec/vcr_cassettes/IdealPostcodes_Address_search_is_sensitive_to_limit.yml +81 -0
  27. data/spec/vcr_cassettes/IdealPostcodes_Address_search_is_sensitive_to_page.yml +369 -0
  28. data/spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_invalid_key.yml +42 -0
  29. data/spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_limit_breached.yml +42 -0
  30. data/spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_no_lookups_remaining.yml +42 -0
  31. data/spec/vcr_cassettes/IdealPostcodes_Address_search_returns_results_in_a_SearchResult_object.yml +273 -0
  32. data/spec/vcr_cassettes/IdealPostcodes_Key_lookup_details_returns_key_details.yml +62 -0
  33. data/spec/vcr_cassettes/IdealPostcodes_Key_lookup_returns_the_availability_status_of_a_key_false_key_.yml +45 -0
  34. data/spec/vcr_cassettes/IdealPostcodes_Key_lookup_returns_the_availability_status_of_a_key_true_key_.yml +45 -0
  35. data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_is_sensitive_to_limit_parameter.yml +52 -0
  36. data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_is_sensitive_to_radius_parament.yml +133 -0
  37. data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_returns_an_array_of_postcodes_and_locations.yml +84 -0
  38. data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_returns_an_empty_array_if_no_results_are_found.yml +43 -0
  39. data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_invalid_key.yml +42 -0
  40. data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_key_has_run_out_of_balance.yml +42 -0
  41. data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_limit_has_been_reached.yml +42 -0
  42. data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_returns_a_list_of_addresses_for_a_postcode.yml +268 -0
  43. data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_returns_an_empty_array_if_postcode_does_not_exist.yml +42 -0
  44. data/spec/vcr_cassettes/IdealPostcodes_key_available_returns_false_if_key_is_unavailable.yml +45 -0
  45. data/spec/vcr_cassettes/IdealPostcodes_key_available_returns_true_if_key_is_available.yml +45 -0
  46. data/spec/vcr_cassettes/IdealPostcodes_key_details_raises_an_exception_if_no_secret_is_provided.yml +45 -0
  47. data/spec/vcr_cassettes/IdealPostcodes_key_details_returns_key_information.yml +62 -0
  48. data/spec/vcr_cassettes/IdealPostcodes_request_generates_a_HTTP_request.yml +268 -0
  49. data/spec/vcr_cassettes/IdealPostcodes_request_raises_authentication_error_if_invalid_key_is_provided.yml +42 -0
  50. data/spec/vcr_cassettes/IdealPostcodes_request_raises_limit_reached_error_if_a_limit_has_been_breached.yml +42 -0
  51. data/spec/vcr_cassettes/IdealPostcodes_request_raises_token_exhausted_error_if_key_balance_is_depleted.yml +42 -0
  52. metadata +117 -52
  53. data/test/test_helper.rb +0 -77
  54. data/test/test_ideal_postcodes.rb +0 -78
metadata CHANGED
@@ -1,121 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ideal_postcodes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
- - Chris Blanchard
7
+ - Ideal Postcodes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-08 00:00:00.000000000 Z
11
+ date: 2021-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
19
+ version: '1.8'
20
+ - - "<"
25
21
  - !ruby/object:Gem::Version
26
- version: '1.6'
27
- - !ruby/object:Gem::Dependency
28
- name: multi_json
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: 1.7.9
22
+ version: '3.0'
34
23
  type: :runtime
35
24
  prerelease: false
36
25
  version_requirements: !ruby/object:Gem::Requirement
37
26
  requirements:
38
- - - ~>
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '1.8'
30
+ - - "<"
39
31
  - !ruby/object:Gem::Version
40
- version: 1.7.9
32
+ version: '3.0'
41
33
  - !ruby/object:Gem::Dependency
42
- name: mocha
34
+ name: rake
43
35
  requirement: !ruby/object:Gem::Requirement
44
36
  requirements:
45
- - - ~>
37
+ - - "~>"
46
38
  - !ruby/object:Gem::Version
47
- version: 0.14.0
39
+ version: '10.1'
48
40
  type: :development
49
41
  prerelease: false
50
42
  version_requirements: !ruby/object:Gem::Requirement
51
43
  requirements:
52
- - - ~>
44
+ - - "~>"
53
45
  - !ruby/object:Gem::Version
54
- version: 0.14.0
46
+ version: '10.1'
55
47
  - !ruby/object:Gem::Dependency
56
- name: test-unit
48
+ name: vcr
57
49
  requirement: !ruby/object:Gem::Requirement
58
50
  requirements:
59
- - - '>='
51
+ - - "~>"
60
52
  - !ruby/object:Gem::Version
61
- version: '0'
53
+ version: '2.9'
62
54
  type: :development
63
55
  prerelease: false
64
56
  version_requirements: !ruby/object:Gem::Requirement
65
57
  requirements:
66
- - - '>='
58
+ - - "~>"
67
59
  - !ruby/object:Gem::Version
68
- version: '0'
60
+ version: '2.9'
69
61
  - !ruby/object:Gem::Dependency
70
- name: shoulda
62
+ name: rspec
71
63
  requirement: !ruby/object:Gem::Requirement
72
64
  requirements:
73
- - - ~>
65
+ - - "~>"
74
66
  - !ruby/object:Gem::Version
75
- version: 3.5.0
67
+ version: '3.1'
76
68
  type: :development
77
69
  prerelease: false
78
70
  version_requirements: !ruby/object:Gem::Requirement
79
71
  requirements:
80
- - - ~>
72
+ - - "~>"
81
73
  - !ruby/object:Gem::Version
82
- version: 3.5.0
74
+ version: '3.1'
83
75
  - !ruby/object:Gem::Dependency
84
- name: rake
76
+ name: webmock
85
77
  requirement: !ruby/object:Gem::Requirement
86
78
  requirements:
87
- - - '>='
79
+ - - "~>"
88
80
  - !ruby/object:Gem::Version
89
- version: '0'
81
+ version: 2.3.1
90
82
  type: :development
91
83
  prerelease: false
92
84
  version_requirements: !ruby/object:Gem::Requirement
93
85
  requirements:
94
- - - '>='
86
+ - - "~>"
95
87
  - !ruby/object:Gem::Version
96
- version: '0'
97
- description: Ideal Postcodes is a simple postcode lookup API for UK addresses. See
88
+ version: 2.3.1
89
+ description: Ideal Postcodes is a simple postcode lookup API for UK addresses. See
98
90
  https://ideal-postcodes.co.uk
99
91
  email:
100
- - cablanchard@gmail.com
92
+ - support@ideal-postcodes.co.uk
101
93
  executables: []
102
94
  extensions: []
103
95
  extra_rdoc_files: []
104
96
  files:
97
+ - ".github/workflows/ci.yml"
98
+ - CHANGELOG.md
105
99
  - Gemfile
100
+ - LICENSE
106
101
  - README.md
107
102
  - Rakefile
108
103
  - ideal-postcodes-ruby.gemspec
109
104
  - lib/ideal_postcodes.rb
110
105
  - lib/idealpostcodes.rb
106
+ - lib/idealpostcodes/address.rb
111
107
  - lib/idealpostcodes/errors.rb
108
+ - lib/idealpostcodes/key.rb
112
109
  - lib/idealpostcodes/postcode.rb
113
110
  - lib/idealpostcodes/util.rb
114
111
  - lib/idealpostcodes/version.rb
115
- - test/test_helper.rb
116
- - test/test_ideal_postcodes.rb
117
- homepage: https://ideal-postcodes.co.uk/documentation
118
- licenses: []
112
+ - spec/addresses_spec.rb
113
+ - spec/idealpostcodes_spec.rb
114
+ - spec/keys_spec.rb
115
+ - spec/postcodes_spec.rb
116
+ - spec/spec_helper.rb
117
+ - spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_invalid_key.yml
118
+ - spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_limit_breached.yml
119
+ - spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_no_lookups_remaining.yml
120
+ - spec/vcr_cassettes/IdealPostcodes_Address_lookup_returns_an_address_for_a_valid_UDPRN.yml
121
+ - spec/vcr_cassettes/IdealPostcodes_Address_lookup_returns_nil_for_an_invalid_UDPRN.yml
122
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_is_sensitive_to_limit.yml
123
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_is_sensitive_to_page.yml
124
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_invalid_key.yml
125
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_limit_breached.yml
126
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_no_lookups_remaining.yml
127
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_returns_results_in_a_SearchResult_object.yml
128
+ - spec/vcr_cassettes/IdealPostcodes_Key_lookup_details_returns_key_details.yml
129
+ - spec/vcr_cassettes/IdealPostcodes_Key_lookup_returns_the_availability_status_of_a_key_false_key_.yml
130
+ - spec/vcr_cassettes/IdealPostcodes_Key_lookup_returns_the_availability_status_of_a_key_true_key_.yml
131
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_is_sensitive_to_limit_parameter.yml
132
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_is_sensitive_to_radius_parament.yml
133
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_returns_an_array_of_postcodes_and_locations.yml
134
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_returns_an_empty_array_if_no_results_are_found.yml
135
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_invalid_key.yml
136
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_key_has_run_out_of_balance.yml
137
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_limit_has_been_reached.yml
138
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_returns_a_list_of_addresses_for_a_postcode.yml
139
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_returns_an_empty_array_if_postcode_does_not_exist.yml
140
+ - spec/vcr_cassettes/IdealPostcodes_key_available_returns_false_if_key_is_unavailable.yml
141
+ - spec/vcr_cassettes/IdealPostcodes_key_available_returns_true_if_key_is_available.yml
142
+ - spec/vcr_cassettes/IdealPostcodes_key_details_raises_an_exception_if_no_secret_is_provided.yml
143
+ - spec/vcr_cassettes/IdealPostcodes_key_details_returns_key_information.yml
144
+ - spec/vcr_cassettes/IdealPostcodes_request_generates_a_HTTP_request.yml
145
+ - spec/vcr_cassettes/IdealPostcodes_request_raises_authentication_error_if_invalid_key_is_provided.yml
146
+ - spec/vcr_cassettes/IdealPostcodes_request_raises_limit_reached_error_if_a_limit_has_been_breached.yml
147
+ - spec/vcr_cassettes/IdealPostcodes_request_raises_token_exhausted_error_if_key_balance_is_depleted.yml
148
+ homepage: https://ideal-postcodes.co.uk/
149
+ licenses:
150
+ - MIT
119
151
  metadata: {}
120
152
  post_install_message:
121
153
  rdoc_options: []
@@ -123,20 +155,53 @@ require_paths:
123
155
  - lib
124
156
  required_ruby_version: !ruby/object:Gem::Requirement
125
157
  requirements:
126
- - - '>='
158
+ - - ">="
127
159
  - !ruby/object:Gem::Version
128
160
  version: '0'
129
161
  required_rubygems_version: !ruby/object:Gem::Requirement
130
162
  requirements:
131
- - - '>='
163
+ - - ">="
132
164
  - !ruby/object:Gem::Version
133
165
  version: '0'
134
166
  requirements: []
135
- rubyforge_project:
136
- rubygems_version: 2.2.2
167
+ rubygems_version: 3.0.8
137
168
  signing_key:
138
169
  specification_version: 4
139
170
  summary: Wrapper for the Ideal-Postcodes.co.uk API
140
171
  test_files:
141
- - test/test_helper.rb
142
- - test/test_ideal_postcodes.rb
172
+ - spec/addresses_spec.rb
173
+ - spec/idealpostcodes_spec.rb
174
+ - spec/keys_spec.rb
175
+ - spec/postcodes_spec.rb
176
+ - spec/spec_helper.rb
177
+ - spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_invalid_key.yml
178
+ - spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_limit_breached.yml
179
+ - spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_no_lookups_remaining.yml
180
+ - spec/vcr_cassettes/IdealPostcodes_Address_lookup_returns_an_address_for_a_valid_UDPRN.yml
181
+ - spec/vcr_cassettes/IdealPostcodes_Address_lookup_returns_nil_for_an_invalid_UDPRN.yml
182
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_is_sensitive_to_limit.yml
183
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_is_sensitive_to_page.yml
184
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_invalid_key.yml
185
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_limit_breached.yml
186
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_no_lookups_remaining.yml
187
+ - spec/vcr_cassettes/IdealPostcodes_Address_search_returns_results_in_a_SearchResult_object.yml
188
+ - spec/vcr_cassettes/IdealPostcodes_Key_lookup_details_returns_key_details.yml
189
+ - spec/vcr_cassettes/IdealPostcodes_Key_lookup_returns_the_availability_status_of_a_key_false_key_.yml
190
+ - spec/vcr_cassettes/IdealPostcodes_Key_lookup_returns_the_availability_status_of_a_key_true_key_.yml
191
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_is_sensitive_to_limit_parameter.yml
192
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_is_sensitive_to_radius_parament.yml
193
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_returns_an_array_of_postcodes_and_locations.yml
194
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_returns_an_empty_array_if_no_results_are_found.yml
195
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_invalid_key.yml
196
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_key_has_run_out_of_balance.yml
197
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_limit_has_been_reached.yml
198
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_returns_a_list_of_addresses_for_a_postcode.yml
199
+ - spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_returns_an_empty_array_if_postcode_does_not_exist.yml
200
+ - spec/vcr_cassettes/IdealPostcodes_key_available_returns_false_if_key_is_unavailable.yml
201
+ - spec/vcr_cassettes/IdealPostcodes_key_available_returns_true_if_key_is_available.yml
202
+ - spec/vcr_cassettes/IdealPostcodes_key_details_raises_an_exception_if_no_secret_is_provided.yml
203
+ - spec/vcr_cassettes/IdealPostcodes_key_details_returns_key_information.yml
204
+ - spec/vcr_cassettes/IdealPostcodes_request_generates_a_HTTP_request.yml
205
+ - spec/vcr_cassettes/IdealPostcodes_request_raises_authentication_error_if_invalid_key_is_provided.yml
206
+ - spec/vcr_cassettes/IdealPostcodes_request_raises_limit_reached_error_if_a_limit_has_been_breached.yml
207
+ - spec/vcr_cassettes/IdealPostcodes_request_raises_token_exhausted_error_if_key_balance_is_depleted.yml
data/test/test_helper.rb DELETED
@@ -1,77 +0,0 @@
1
- require 'test/unit'
2
- require 'mocha/setup'
3
- require 'ideal_postcodes'
4
- require 'shoulda'
5
-
6
- module IdealPostcodes
7
-
8
- attr_accessor :mock
9
-
10
- def self.mock=(mock)
11
- @mock = mock
12
- end
13
-
14
- def self.generate_request(options)
15
- method = options[:method]
16
- url = options[:url]
17
- @mock.execute method, url
18
- end
19
-
20
- end
21
-
22
- def test_response(body, status=200)
23
- body = MultiJson.dump(body)
24
- m = mock
25
- m.instance_variable_set('@instance_vals', {code: status, body: body})
26
- def m.body; @instance_vals[:body]; end
27
- def m.code; @instance_vals[:code]; end
28
- m
29
- end
30
-
31
- def test_postcode
32
- "ID11QD"
33
- end
34
-
35
- def valid_postcode(params={})
36
- {
37
- result: [
38
- {
39
- postcode: "ID1 1QD",
40
- post_town: "LONDON",
41
- line_1: "Kingsley Hall",
42
- line_2: "Powis Road",
43
- line_3: ""
44
- }
45
- ],
46
- message: "Success",
47
- code: 2000
48
- }
49
- end
50
-
51
- def invalid_postcode
52
- {
53
- message: "Postcode not found",
54
- code: 4040
55
- }
56
- end
57
-
58
- def invalid_token
59
- {
60
- message: "Invalid key",
61
- code: 4010
62
- }
63
- end
64
-
65
- def limit_reached
66
- {
67
- code: 4021,
68
- message: "Lookup Limit Reached"
69
- }
70
- end
71
-
72
- def token_exhausted
73
- {
74
- code: 4020,
75
- message: "Token exhausted"
76
- }
77
- end
@@ -1,78 +0,0 @@
1
- require File.expand_path('../test_helper', __FILE__)
2
-
3
- class TestIdealPostcodes < Test::Unit::TestCase
4
- include Mocha
5
-
6
- context "API" do
7
-
8
- setup do
9
- @mock = mock
10
- IdealPostcodes.mock = @mock
11
- end
12
-
13
- teardown do
14
- IdealPostcodes.mock = nil
15
- end
16
-
17
- should "raise an exception if no API key set" do
18
- IdealPostcodes.api_key = nil
19
- assert_raises IdealPostcodes::AuthenticationError do
20
- postcode = IdealPostcodes::Postcode.lookup(test_postcode)
21
- end
22
- end
23
-
24
- should "raise an exception if authentication failed" do
25
- IdealPostcodes.api_key = "BOGUS"
26
- response = test_response invalid_token
27
- assert_raises IdealPostcodes::AuthenticationError do
28
- @mock.expects(:execute).raises(RestClient::ExceptionWithResponse.new(response, 401))
29
- IdealPostcodes::Postcode.lookup(test_postcode)
30
- end
31
- end
32
-
33
- context "Valid API key" do
34
-
35
- setup do
36
- IdealPostcodes.api_key = "correctkey"
37
- end
38
-
39
- teardown do
40
- IdealPostcodes.api_key = nil
41
- end
42
-
43
- should "raise an exception if tokens exhausted" do
44
- response = test_response token_exhausted
45
- assert_raises IdealPostcodes::TokenExhaustedError do
46
- @mock.expects(:execute).raises(RestClient::ExceptionWithResponse.new(response, 402))
47
- IdealPostcodes::Postcode.lookup(test_postcode)
48
- end
49
- end
50
-
51
- should "raise an exception if limit has been breached" do
52
- response = test_response limit_reached
53
- assert_raises IdealPostcodes::LimitReachedError do
54
- @mock.expects(:execute).raises(RestClient::ExceptionWithResponse.new(response, 402))
55
- IdealPostcodes::Postcode.lookup(test_postcode)
56
- end
57
- end
58
-
59
- should "return postcode object with addresses for valid postcode" do
60
- response = test_response valid_postcode
61
- @mock.expects(:execute).returns(response)
62
- postcode = IdealPostcodes::Postcode.lookup(test_postcode)
63
- assert_equal postcode.empty?, false
64
- assert_equal postcode.addresses, valid_postcode[:result]
65
- end
66
-
67
- should "return postcode object with empty array for non-existent postcode" do
68
- response = test_response invalid_postcode
69
- @mock.expects(:execute).raises(RestClient::ExceptionWithResponse.new(response, 404))
70
- postcode = IdealPostcodes::Postcode.lookup(test_postcode)
71
- assert_equal postcode.empty?, true
72
- end
73
-
74
- end
75
-
76
- end
77
-
78
- end