atdis 0.2 → 0.3

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 (59) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +0 -1
  4. data/Gemfile +1 -1
  5. data/README.md +25 -2
  6. data/Rakefile +1 -1
  7. data/docs/ATDIS-1.0.2 Application Tracking Data Interchange Specification (v1.0.2).doc +0 -0
  8. data/docs/ATDIS-1.0.2 Application Tracking Data Interchange Specification (v1.0.2).pdf +0 -0
  9. data/lib/atdis.rb +2 -7
  10. data/lib/atdis/feed.rb +80 -8
  11. data/lib/atdis/model.rb +74 -128
  12. data/lib/atdis/models/address.rb +17 -0
  13. data/lib/atdis/models/application.rb +31 -0
  14. data/lib/atdis/models/authority.rb +19 -0
  15. data/lib/atdis/models/document.rb +16 -0
  16. data/lib/atdis/models/event.rb +16 -0
  17. data/lib/atdis/models/info.rb +81 -0
  18. data/lib/atdis/models/land_title_ref.rb +26 -0
  19. data/lib/atdis/models/location.rb +23 -0
  20. data/lib/atdis/models/page.rb +56 -0
  21. data/lib/atdis/models/pagination.rb +68 -0
  22. data/lib/atdis/models/person.rb +14 -0
  23. data/lib/atdis/models/reference.rb +13 -0
  24. data/lib/atdis/models/response.rb +16 -0
  25. data/lib/atdis/models/torrens_title.rb +24 -0
  26. data/lib/atdis/validators.rb +26 -10
  27. data/lib/atdis/version.rb +1 -1
  28. data/spec/atdis/feed_spec.rb +78 -22
  29. data/spec/atdis/model_spec.rb +80 -131
  30. data/spec/atdis/models/address_spec.rb +22 -0
  31. data/spec/atdis/models/application_spec.rb +246 -0
  32. data/spec/atdis/models/authority_spec.rb +34 -0
  33. data/spec/atdis/models/document_spec.rb +19 -0
  34. data/spec/atdis/models/event_spec.rb +29 -0
  35. data/spec/atdis/models/info_spec.rb +303 -0
  36. data/spec/atdis/models/land_title_ref_spec.rb +39 -0
  37. data/spec/atdis/models/location_spec.rb +95 -0
  38. data/spec/atdis/models/page_spec.rb +296 -0
  39. data/spec/atdis/models/pagination_spec.rb +153 -0
  40. data/spec/atdis/models/person_spec.rb +19 -0
  41. data/spec/atdis/models/reference_spec.rb +55 -0
  42. data/spec/atdis/models/response_spec.rb +5 -0
  43. data/spec/atdis/models/torrens_title_spec.rb +52 -0
  44. data/spec/atdis/separated_url_spec.rb +4 -4
  45. metadata +141 -135
  46. data/docs/ATDIS-1.0.7 Application Tracking Data Interchange Specification (v1.0).doc +0 -0
  47. data/docs/ATDIS-1.0.7 Application Tracking Data Interchange Specification (v1.0).pdf +0 -0
  48. data/lib/atdis/application.rb +0 -78
  49. data/lib/atdis/document.rb +0 -14
  50. data/lib/atdis/event.rb +0 -17
  51. data/lib/atdis/location.rb +0 -21
  52. data/lib/atdis/page.rb +0 -130
  53. data/lib/atdis/person.rb +0 -12
  54. data/spec/atdis/application_spec.rb +0 -539
  55. data/spec/atdis/document_spec.rb +0 -19
  56. data/spec/atdis/event_spec.rb +0 -29
  57. data/spec/atdis/location_spec.rb +0 -148
  58. data/spec/atdis/page_spec.rb +0 -492
  59. data/spec/atdis/person_spec.rb +0 -19
@@ -1,19 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe ATDIS::Document do
4
- it ".attribute_names" do
5
- ATDIS::Document.attribute_names.should == ["ref", "title", "document_url"]
6
- end
7
-
8
- it ".ref" do
9
- ATDIS::Document.interpret(:ref => "27B/6").ref.should == "27B/6"
10
- end
11
-
12
- it ".title" do
13
- ATDIS::Document.interpret(:title => "Authorisation for Repairs").title.should == "Authorisation for Repairs"
14
- end
15
-
16
- it ".document_url" do
17
- ATDIS::Document.interpret(:document_url => "http://foo.com/bar").document_url.should == URI.parse("http://foo.com/bar")
18
- end
19
- end
@@ -1,29 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe ATDIS::Event do
4
- it ".attribute_names" do
5
- ATDIS::Event.attribute_names.should == ["id", "date", "description", "event_type", "status"]
6
- end
7
-
8
- it ".id" do
9
- ATDIS::Event.interpret(:id => "27B/6").id.should == "27B/6"
10
- end
11
-
12
- it ".date" do
13
- ATDIS::Event.interpret(:date => "2013-06-18").date.should == DateTime.new(2013,6,18)
14
- end
15
-
16
- it ".description" do
17
- ATDIS::Event.interpret(:description => "A very fine event").description.should == "A very fine event"
18
- end
19
-
20
- it ".event_type" do
21
- # TODO Is event_type always a string? ATDIS-1.0.3 doesn't say
22
- ATDIS::Event.interpret(:event_type => "approval").event_type.should == "approval"
23
- end
24
-
25
- it ".status" do
26
- # TODO Is status always a string? ATDIS-1.0.3 doesn't say
27
- ATDIS::Event.interpret(:status => "approved").status.should == "approved"
28
- end
29
- end
@@ -1,148 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe ATDIS::Location do
4
- it ".attribute_names" do
5
- ATDIS::Location.attribute_names.should == [
6
- "address",
7
- "lot",
8
- "section",
9
- "dpsp_id",
10
- "geometry"
11
- ]
12
- end
13
-
14
- describe "validation" do
15
- context "valid location" do
16
- let(:l) { ATDIS::Location.new(
17
- :address => "123 Fourfivesix Street Neutral Bay NSW 2089",
18
- :lot => "10",
19
- :section => "ABC",
20
- :dpsp_id => "DP2013-0381",
21
- :geometry => {
22
- :type => "Point",
23
- :coordinates => [100.0, 0.0]
24
- }
25
- )}
26
-
27
- it { l.should be_valid }
28
-
29
- it "address" do
30
- l.address = ""
31
- l.should_not be_valid
32
- l.errors.messages.should == {:address => [ATDIS::ErrorMessage["can't be blank", "4.3.3"]]}
33
- end
34
-
35
- it "geometry" do
36
- l.geometry = {:type => "Point"}
37
- l.geometry.should be_nil
38
- l.should_not be_valid
39
- end
40
-
41
- describe "lot" do
42
- it "can not be blank" do
43
- l.lot = ""
44
- l.should_not be_valid
45
- l.errors.messages.should == {:lot => [ATDIS::ErrorMessage["can't be blank", "4.3.3"]]}
46
- end
47
-
48
- it "can be none but is not interpreted in any special way" do
49
- l.lot = "none"
50
- l.lot.should == "none"
51
- l.should be_valid
52
- end
53
- end
54
-
55
- describe "section" do
56
- it "can not be blank" do
57
- l.section = ""
58
- l.should_not be_valid
59
- l.errors.messages.should == {:section => [ATDIS::ErrorMessage["can't be blank", "4.3.3"]]}
60
- end
61
-
62
- it "can be none" do
63
- l.section = "none"
64
- l.section.should be_nil
65
- l.should be_valid
66
- end
67
- end
68
-
69
- describe "dpsp_id" do
70
- it "can not be blank" do
71
- l.dpsp_id = ""
72
- l.should_not be_valid
73
- l.errors.messages.should == {:dpsp_id => [ATDIS::ErrorMessage["can't be blank", "4.3.3"]]}
74
- end
75
-
76
- it "can be none but is not interpreted in any special way" do
77
- l.dpsp_id = "none"
78
- l.dpsp_id.should == "none"
79
- l.should be_valid
80
- end
81
- end
82
- end
83
- end
84
-
85
- describe ".interpret" do
86
- it "should interpret a parsed json block of location data" do
87
- l = ATDIS::Location.interpret(
88
- :address => "123 Fourfivesix Street Neutral Bay NSW 2089",
89
- :land_title_ref => {
90
- :lot => "10",
91
- :section => "ABC",
92
- :dpsp_id => "DP2013-0381"
93
- })
94
-
95
- l.address.should == "123 Fourfivesix Street Neutral Bay NSW 2089"
96
- l.lot.should == "10"
97
- l.section.should == "ABC"
98
- l.dpsp_id.should == "DP2013-0381"
99
- end
100
-
101
- it "should gracefully handle the land_title_ref block being missing" do
102
- l = ATDIS::Location.interpret(:address => "123 Fourfivesix Street Neutral Bay NSW 2089")
103
- l.address.should == "123 Fourfivesix Street Neutral Bay NSW 2089"
104
- l.lot.should == ""
105
- l.section.should == ""
106
- l.dpsp_id.should == ""
107
- end
108
-
109
- it "should pass on the responsibility for parsing the geometry section" do
110
- # TODO Not 100% clear from section 4.3.3 of ATDIS-1.0.3 if this is the correct indentation
111
- l = ATDIS::Location.interpret(
112
- :geometry => {
113
- :type => "Point",
114
- :coordinates => [100.0, 0.0]
115
- }
116
- )
117
- # TODO Check that the returned geometry is a point
118
- l.geometry.x.should == 100
119
- l.geometry.y.should == 0
120
- end
121
-
122
- it "should interpret a polygon in the geometry section" do
123
- # TODO Not 100% clear from section 4.3.3 of ATDIS-1.0.3 if this is the correct indentation
124
- l = ATDIS::Location.interpret(
125
- :geometry => {
126
- :type => "Polygon",
127
- :coordinates => [
128
- [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
129
- [100.0, 1.0], [100.0, 0.0] ]
130
- ]
131
- }
132
- )
133
- # TODO Check that the returned geometry is a polygon
134
- l.geometry.interior_rings.should be_empty
135
- l.geometry.exterior_ring.points.count.should == 5
136
- l.geometry.exterior_ring.points[0].x.should == 100
137
- l.geometry.exterior_ring.points[0].y.should == 0
138
- l.geometry.exterior_ring.points[1].x.should == 101
139
- l.geometry.exterior_ring.points[1].y.should == 0
140
- l.geometry.exterior_ring.points[2].x.should == 101
141
- l.geometry.exterior_ring.points[2].y.should == 1
142
- l.geometry.exterior_ring.points[3].x.should == 100
143
- l.geometry.exterior_ring.points[3].y.should == 1
144
- l.geometry.exterior_ring.points[4].x.should == 100
145
- l.geometry.exterior_ring.points[4].y.should == 0
146
- end
147
- end
148
- end
@@ -1,492 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe ATDIS::Page do
4
- it ".attribute_names" do
5
- ATDIS::Page.attribute_names.should == ["results", "count", "previous_page_no", "next_page_no", "current_page_no",
6
- "no_results_per_page", "total_no_results", "total_no_pages"]
7
- end
8
-
9
- describe "validations" do
10
- context "two valid applications no paging" do
11
- before :each do
12
- ATDIS::Application.should_receive(:interpret).with(:description => "application1").and_return(double(:valid? => true))
13
- ATDIS::Application.should_receive(:interpret).with(:description => "application2").and_return(double(:valid? => true))
14
- end
15
- let(:page) { ATDIS::Page.new(:results => [{:description => "application1"}, {:description => "application2"}]) }
16
-
17
- it {page.should be_valid}
18
-
19
- context "with pagination" do
20
- before :each do
21
- page.count = 2
22
- page.no_results_per_page = 25
23
- page.current_page_no = 1
24
- page.total_no_results = 2
25
- page.total_no_pages = 1
26
- end
27
- it { page.should be_valid }
28
-
29
- context "count is not consistent" do
30
- before :each do
31
- page.count = 1
32
- end
33
- it do
34
- page.should_not be_valid
35
- page.errors.messages.should == {:count => [ATDIS::ErrorMessage["is not the same as the number of applications returned", "6.5"]]}
36
- end
37
- end
38
-
39
- context "count is larger than number of results per page" do
40
- before :each do
41
- page.no_results_per_page = 1
42
- page.total_no_results = 1
43
- end
44
- it do
45
- page.should_not be_valid
46
- page.errors.messages.should == {:count => [ATDIS::ErrorMessage["should not be larger than the number of results per page", "6.5"]]}
47
- end
48
- end
49
-
50
- context "count is absent" do
51
- before :each do
52
- page.count = nil
53
- end
54
-
55
- it do
56
- page.should_not be_valid
57
- page.errors.messages.should == {:count => [ATDIS::ErrorMessage["should be present if pagination is being used", "6.5"]]}
58
- end
59
- end
60
-
61
- context "previous page number is pointing to a weird page number" do
62
- before :each do
63
- page.previous_page_no = 5
64
- page.current_page_no = 2
65
- page.total_no_results = 50
66
- page.total_no_pages = 2
67
- end
68
- it do
69
- page.should_not be_valid
70
- page.errors.messages.should == {:previous_page_no => [ATDIS::ErrorMessage["should be one less than current page number or null if first page", "6.5"]]}
71
- page.json_errors.should == [[{:pagination => {:previous => 5}}, [ATDIS::ErrorMessage["should be one less than current page number or null if first page", "6.5"]]]]
72
- end
73
- end
74
-
75
- context "previous page number if nil but not on first page" do
76
- before :each do
77
- page.current_page_no = 4
78
- page.next_page_no = 5
79
- page.previous_page_no = nil
80
- page.total_no_results = 240
81
- page.total_no_pages = 10
82
- end
83
- it do
84
- page.should_not be_valid
85
- page.errors.messages.should == {:previous_page_no => [ATDIS::ErrorMessage["can't be null if not on the first page", "6.5"]]}
86
- end
87
- end
88
-
89
- context "previous page number not nil but on first page" do
90
- before :each do
91
- page.current_page_no = 1
92
- page.next_page_no = 2
93
- page.previous_page_no = 0
94
- page.total_no_results = 240
95
- page.total_no_pages = 10
96
- end
97
- it do
98
- page.should_not be_valid
99
- page.errors.messages.should == {:previous_page_no => [ATDIS::ErrorMessage["should be null if on the first page", "6.5"]]}
100
- end
101
- end
102
-
103
- context "next page number is pointing to a weird page number" do
104
- before :each do
105
- page.next_page_no = 5
106
- page.total_no_results = 50
107
- page.total_no_pages = 2
108
- end
109
- it do
110
- page.should_not be_valid
111
- page.errors.messages.should == {:next_page_no => [ATDIS::ErrorMessage["should be one greater than current page number or null if last page", "6.5"]]}
112
- end
113
- end
114
-
115
- context "next page number is nil but not on last page" do
116
- before :each do
117
- page.current_page_no = 4
118
- page.previous_page_no = 3
119
- page.next_page_no = nil
120
- page.total_no_results = 140
121
- page.total_no_pages = 6
122
- end
123
- it do
124
- page.should_not be_valid
125
- page.errors.messages.should == {:next_page_no => [ATDIS::ErrorMessage["can't be null if not on the last page", "6.5"]]}
126
- end
127
- end
128
-
129
- context "next page number is not nil but on last page" do
130
- before :each do
131
- page.previous_page_no = 3
132
- page.current_page_no = 4
133
- page.next_page_no = 5
134
- page.total_no_results = 100
135
- page.total_no_pages = 4
136
- end
137
- it do
138
- page.should_not be_valid
139
- page.errors.messages.should == {:next_page_no => [ATDIS::ErrorMessage["should be null if on the last page", "6.5"]]}
140
- end
141
- end
142
-
143
- context "current page is larger than the number of pages" do
144
- before :each do
145
- page.current_page_no = 2
146
- page.previous_page_no = 1
147
- page.next_page_no = 3
148
- page.total_no_pages = 1
149
- end
150
- it do
151
- page.should_not be_valid
152
- page.errors.messages.should == {:current_page_no => [ATDIS::ErrorMessage["is larger than the number of pages", "6.5"]]}
153
- end
154
- end
155
-
156
- context "current page is zero" do
157
- before :each do
158
- page.current_page_no = 0
159
- page.next_page_no = 1
160
- end
161
- it do
162
- page.should_not be_valid
163
- page.errors.messages.should == {:current_page_no => [ATDIS::ErrorMessage["can not be less than 1", "6.5"]]}
164
- end
165
- end
166
-
167
- context "total_no_results is larger than would be expected" do
168
- before :each do
169
- page.current_page_no = 1
170
- page.next_page_no = 2
171
- page.no_results_per_page = 25
172
- page.total_no_pages = 4
173
- page.total_no_results = 101
174
- end
175
- it do
176
- page.should_not be_valid
177
- page.errors.messages.should == {:total_no_results => [ATDIS::ErrorMessage["is larger than can be retrieved through paging", "6.5"]]}
178
- end
179
- end
180
-
181
- context "total no_results is less than would be expected" do
182
- before :each do
183
- page.current_page_no = 1
184
- page.next_page_no = 2
185
- page.no_results_per_page = 25
186
- page.total_no_pages = 4
187
- page.total_no_results = 75
188
- end
189
- it do
190
- page.should_not be_valid
191
- page.errors.messages.should == {:total_no_results => [ATDIS::ErrorMessage["could fit into a smaller number of pages", "6.5"]]}
192
- end
193
- end
194
- end
195
- end
196
-
197
- context "one valid application out of two no paging" do
198
- before :each do
199
- ATDIS::Application.should_receive(:interpret).with(:description => "application1").and_return(double(:valid? => true))
200
- ATDIS::Application.should_receive(:interpret).with(:description => "application2").and_return(double(:valid? => false))
201
- end
202
- let(:page) { ATDIS::Page.new(:results => [{:description => "application1"}, {:description => "application2"}]) }
203
-
204
- it do
205
- page.should_not be_valid
206
- page.errors.messages.should == {:results => [ATDIS::ErrorMessage["is not valid", nil]]}
207
- end
208
- end
209
-
210
- context "two invalid applications no paging" do
211
- let(:a1) { double(:valid? => false, :json_errors => [[{:dat_id => "null"}, ["can not be empty"]]]) }
212
- let(:a2) { double(:valid? => false) }
213
- before :each do
214
- ATDIS::Application.should_receive(:interpret).with(:description => "application1").and_return(a1)
215
- ATDIS::Application.should_receive(:interpret).with(:description => "application2").and_return(a2)
216
- end
217
- let(:page) { ATDIS::Page.new(:results => [{:description => "application1"}, {:description => "application2"}]) }
218
-
219
- it do
220
- page.should_not be_valid
221
- page.errors.messages.should == {:results => [ATDIS::ErrorMessage["is not valid", nil]]}
222
- end
223
-
224
- it "the errors from the first errored application should be here" do
225
- page.should_not be_valid
226
- page.json_errors.should == [[{:response => {:dat_id => "null"}} , ["can not be empty"]]]
227
- end
228
-
229
- end
230
- end
231
-
232
- describe ".level_used?" do
233
- describe "level 1" do
234
- context "two applications" do
235
- before :each do
236
- ATDIS::Application.should_receive(:interpret).with(:description => "application1").and_return(double)
237
- ATDIS::Application.should_receive(:interpret).with(:description => "application2").and_return(double)
238
- end
239
- let(:page) { ATDIS::Page.new(:results => [{:description => "application1"}, {:description => "application2"}]) }
240
-
241
- it { page.level_used?(1).should be_true }
242
- end
243
-
244
- context "no L1 features used" do
245
- let(:page) { ATDIS::Page.new }
246
- it { page.level_used?(1).should be_false }
247
- end
248
- end
249
-
250
- describe "level 2" do
251
- context "two applications with only L1 features" do
252
- let(:a1) { double }
253
- let(:a2) { double }
254
- before :each do
255
- ATDIS::Application.should_receive(:interpret).with(:description => "application1").and_return(a1)
256
- ATDIS::Application.should_receive(:interpret).with(:description => "application2").and_return(a2)
257
- end
258
- let(:page) { ATDIS::Page.new(:results => [{:description => "application1"}, {:description => "application2"}]) }
259
-
260
- it do
261
- a1.should_receive(:level_used?).with(2).and_return(false)
262
- a2.should_receive(:level_used?).with(2).and_return(false)
263
- page.level_used?(2).should be_false
264
- end
265
-
266
- context "L2 feature used on Page" do
267
- before :each do
268
- page.count = 2
269
- end
270
-
271
- it { page.level_used?(2).should be_true }
272
- end
273
- end
274
-
275
- context "two applications with L2 features" do
276
- let(:a1) { double }
277
- let(:a2) { double }
278
- before :each do
279
- ATDIS::Application.should_receive(:interpret).with(:description => "application1").and_return(a1)
280
- ATDIS::Application.should_receive(:interpret).with(:description => "application2").and_return(a2)
281
- end
282
- let(:page) { ATDIS::Page.new(:results => [{:description => "application1"}, {:description => "application2"}]) }
283
-
284
- it "should ask the applications whether they have L2 features" do
285
- a1.should_receive(:level_used?).with(2).and_return(true)
286
- page.level_used?(2).should be_true
287
- end
288
- end
289
- end
290
- end
291
-
292
- context "paging supported by vendor" do
293
- context "read a from an invalid json string" do
294
- let(:page) { ATDIS::Page.read_json(<<-EOF
295
- {
296
- "response": [
297
- {
298
- "application": {
299
- "description": "application2"
300
- }
301
- }
302
- ],
303
- }
304
- EOF
305
- )}
306
-
307
- it do
308
- page.should_not be_valid
309
- page.errors.messages.has_key?(:json).should be_true
310
- page.errors.messages.count.should == 1
311
- # The error messages returned by the library are different for different Ruby versions
312
- ruby18_message = ATDIS::ErrorMessage['Invalid JSON: unexpected "}"', nil]
313
- ruby19_message = ATDIS::ErrorMessage["Invalid JSON: 784: unexpected token at '{\n \"response\": [\n {\n \"application\": {\n \"description\": \"application2\"\n } \n }\n ],\n} \n'", nil]
314
- ruby20_message = ATDIS::ErrorMessage["Invalid JSON: 795: unexpected token at '{\n \"response\": [\n {\n \"application\": {\n \"description\": \"application2\"\n } \n }\n ],\n} \n'", nil]
315
- page.errors.messages[:json].count.should == 1
316
- message = page.errors.messages[:json].first
317
- (message == ruby18_message || message == ruby19_message || message == ruby20_message).should be_true
318
- end
319
- end
320
-
321
- context "read from a json string" do
322
- let(:page) { ATDIS::Page.read_json(<<-EOF
323
- {
324
- "response": [
325
- {
326
- "application": {
327
- "description": "application1"
328
- }
329
- },
330
- {
331
- "application": {
332
- "description": "application2"
333
- }
334
- }
335
- ],
336
- "count": 2,
337
- "pagination": {
338
- "previous": 1,
339
- "next": 3,
340
- "current": 2,
341
- "per_page": 2,
342
- "count": 50,
343
- "pages": 25
344
- }
345
- }
346
- EOF
347
- )}
348
- it ".results" do
349
- application1 = double("Application")
350
- application2 = double("Application")
351
- ATDIS::Application.should_receive(:interpret).with(:application => {:description => "application1"}).and_return(application1)
352
- ATDIS::Application.should_receive(:interpret).with(:application => {:description => "application2"}).and_return(application2)
353
-
354
- page.results.should == [application1, application2]
355
- end
356
-
357
- it ".next" do
358
- expect { page.next }.to raise_error "Can't use next_url when loaded with read_json"
359
- end
360
- end
361
-
362
- context "read from a url" do
363
- before :each do
364
- # Mock network response
365
- RestClient.should_receive(:get).with("http://www.council.nsw.gov.au/atdis/1.0/applications.json").and_return(double(:to_str => <<-EOF
366
- {
367
- "response": [
368
- {
369
- "application": {
370
- "description": "application1"
371
- }
372
- },
373
- {
374
- "application": {
375
- "description": "application2"
376
- }
377
- }
378
- ]
379
- }
380
- EOF
381
- ))
382
- end
383
-
384
- let(:applications_results) { ATDIS::Page.read_url("http://www.council.nsw.gov.au/atdis/1.0/applications.json") }
385
-
386
- it ".results" do
387
- application1 = double("Application")
388
- application2 = double("Application")
389
- ATDIS::Application.should_receive(:interpret).with(:application => {:description => "application1"}).and_return(application1)
390
- ATDIS::Application.should_receive(:interpret).with(:application => {:description => "application2"}).and_return(application2)
391
-
392
- applications_results.results.should == [application1, application2]
393
- end
394
-
395
- it ".next" do
396
- applications_results.next.should be_nil
397
- end
398
-
399
- it ".previous_page_no" do
400
- applications_results.previous_page_no.should be_nil
401
- end
402
-
403
- it ".next_page_no" do
404
- applications_results.next_page_no.should be_nil
405
- end
406
-
407
- it ".current_page_no" do
408
- applications_results.current_page_no.should be_nil
409
- end
410
-
411
- it ".no_results_per_page" do
412
- applications_results.no_results_per_page.should be_nil
413
- end
414
-
415
- it ".total_no_results" do
416
- applications_results.total_no_results.should be_nil
417
- end
418
-
419
- it ".total_no_pages" do
420
- applications_results.total_no_pages.should be_nil
421
- end
422
- end
423
- end
424
-
425
- context "paging supported by vendor" do
426
- before :each do
427
- RestClient.should_receive(:get).with("http://www.council.nsw.gov.au/atdis/1.0/applications.json?page=2").and_return(double(:to_str => <<-EOF
428
- {
429
- "response": [
430
- {
431
- "application": {
432
- "description": "application1"
433
- }
434
- },
435
- {
436
- "application": {
437
- "description": "application2"
438
- }
439
- }
440
- ],
441
- "count": 2,
442
- "pagination": {
443
- "previous": 1,
444
- "next": 3,
445
- "current": 2,
446
- "per_page": 2,
447
- "count": 50,
448
- "pages": 25
449
- }
450
- }
451
- EOF
452
- ))
453
- end
454
-
455
- let(:applications_results) { ATDIS::Page.read_url("http://www.council.nsw.gov.au/atdis/1.0/applications.json?page=2") }
456
-
457
- it ".previous_page_no" do
458
- applications_results.previous_page_no.should == 1
459
- end
460
-
461
- it ".next_page_no" do
462
- applications_results.next_page_no.should == 3
463
- end
464
-
465
- it ".current_page_no" do
466
- applications_results.current_page_no.should == 2
467
- end
468
-
469
- it ".no_results_per_page" do
470
- applications_results.no_results_per_page.should == 2
471
- end
472
-
473
- it ".total_no_results" do
474
- applications_results.total_no_results.should == 50
475
- end
476
-
477
- it ".total_no_pages" do
478
- applications_results.total_no_pages.should == 25
479
- end
480
-
481
- it ".next_url" do
482
- applications_results.next_url.should == "http://www.council.nsw.gov.au/atdis/1.0/applications.json?page=3"
483
- end
484
-
485
- it ".next" do
486
- n = double("Page")
487
- applications_results
488
- ATDIS::Page.should_receive(:read_url).with("http://www.council.nsw.gov.au/atdis/1.0/applications.json?page=3").and_return(n)
489
- applications_results.next.should == n
490
- end
491
- end
492
- end