ideal_postcodes 0.1.1 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
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