my_society-map_it 0.0.5 → 0.0.6

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 (23) hide show
  1. data/Gemfile +3 -0
  2. data/README.md +7 -1
  3. data/Rakefile +10 -2
  4. data/lib/my_society/map_it.rb +93 -14
  5. data/lib/my_society/map_it/version.rb +1 -1
  6. data/my_society-map_it.gemspec +5 -0
  7. data/spec/cassettes/MySociety_MapIt_Postcode/gives_a_correct_gss_code_for_a_ward.yml +184 -0
  8. data/spec/cassettes/MySociety_MapIt_Postcode/gives_a_correct_lat/lng_for_a_postcode.yml +193 -0
  9. data/spec/cassettes/MySociety_MapIt_Postcode/gives_a_correct_ward.yml +184 -0
  10. data/spec/cassettes/MySociety_MapIt_Postcode/single_tier/correctly_identifies_a_single_tier_local_authority.yml +355 -0
  11. data/spec/cassettes/MySociety_MapIt_Postcode/single_tier/returns_the_correct_local_authority.yml +355 -0
  12. data/spec/cassettes/MySociety_MapIt_Postcode/single_tier/returns_the_correct_local_authority_gss_code.yml +355 -0
  13. data/spec/cassettes/MySociety_MapIt_Postcode/two_tier/correctly_identifies_a_two_tier_local_authority.yml +727 -0
  14. data/spec/cassettes/MySociety_MapIt_Postcode/two_tier/gives_a_correct_county_council.yml +365 -0
  15. data/spec/cassettes/MySociety_MapIt_Postcode/two_tier/gives_a_correct_county_council_gss_code.yml +365 -0
  16. data/spec/cassettes/MySociety_MapIt_Postcode/two_tier/gives_a_correct_district_council.yml +184 -0
  17. data/spec/cassettes/MySociety_MapIt_Postcode/two_tier/gives_a_correct_district_council_gss_code.yml +184 -0
  18. data/spec/cassettes/MySociety_MapIt_Postcode/two_tier/returns_a_hash_when_asked_for_a_local_authority.yml +727 -0
  19. data/spec/cassettes/MySociety_MapIt_Postcode/with_parish/returns_the_correct_parish.yml +184 -0
  20. data/spec/cassettes/MySociety_MapIt_Postcode/without_parish/returns_the_nil_for_a_parish.yml +179 -0
  21. data/spec/postcode_spec.rb +96 -0
  22. data/spec/spec_helper.rb +23 -0
  23. metadata +101 -5
@@ -0,0 +1,184 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://mapit.mysociety.org/postcode/B463LD
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept:
11
+ - ! '*/*'
12
+ user-agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ expires:
20
+ - Tue, 15 Oct 2013 13:20:51 GMT
21
+ vary:
22
+ - Cookie,Accept-Encoding
23
+ etag:
24
+ - ! '"40eca97e347e9ac2c1ce9caca6bfb5a2;gzip"'
25
+ cache-control:
26
+ - max-age=2419200
27
+ access-control-allow-origin:
28
+ - ! '*'
29
+ last-modified:
30
+ - Tue, 17 Sep 2013 13:20:51 GMT
31
+ content-type:
32
+ - application/json; charset=utf-8
33
+ x-url:
34
+ - /postcode/B463LD
35
+ transfer-encoding:
36
+ - chunked
37
+ date:
38
+ - Tue, 17 Sep 2013 14:44:17 GMT
39
+ age:
40
+ - '5006'
41
+ connection:
42
+ - keep-alive
43
+ body:
44
+ encoding: US-ASCII
45
+ string: ! '{"wgs84_lat": 52.496789409955881, "coordsyst": "G", "shortcuts":
46
+ {"WMC": 66024, "ward": {"county": 15881, "district": 7606}, "council": {"county":
47
+ 2243, "district": 2458}}, "wgs84_lon": -1.706805276569471, "postcode": "B46
48
+ 3LD", "easting": 420002, "areas": {"40352": {"parent_area": null, "generation_high":
49
+ 20, "all_names": {}, "id": 40352, "codes": {"ons": "E02006473"}, "name": "North
50
+ Warwickshire 006", "country": "E", "type_name": "Middle Layer Super Output
51
+ Area (Full)", "generation_low": 13, "country_name": "England", "type": "OMF"},
52
+ "11809": {"parent_area": null, "generation_high": 20, "all_names": {}, "id":
53
+ 11809, "codes": {"ons": "05", "gss": "E15000005", "unit_id": "41426"}, "name":
54
+ "West Midlands", "country": "E", "type_name": "European region", "generation_low":
55
+ 1, "country_name": "England", "type": "EUR"}, "2243": {"parent_area": null,
56
+ "generation_high": 20, "all_names": {}, "id": 2243, "codes": {"ons": "44",
57
+ "gss": "E10000031", "unit_id": "10049"}, "name": "Warwickshire County Council",
58
+ "country": "E", "type_name": "County council", "generation_low": 1, "country_name":
59
+ "England", "type": "CTY"}, "900001": {"parent_area": null, "generation_high":
60
+ 20, "all_names": {}, "id": 900001, "codes": {}, "name": "European Parliament",
61
+ "country": "", "type_name": "European Parliament", "generation_low": 1, "country_name":
62
+ "-", "type": "EUP"}, "66024": {"parent_area": null, "generation_high": 20,
63
+ "all_names": {}, "id": 66024, "codes": {"gss": "E14000854", "unit_id": "24700"},
64
+ "name": "North Warwickshire", "country": "E", "type_name": "UK Parliament
65
+ constituency", "generation_low": 13, "country_name": "England", "type": "WMC"},
66
+ "15881": {"parent_area": 2243, "generation_high": 20, "all_names": {}, "id":
67
+ 15881, "codes": {"unit_id": "10112"}, "name": "Coleshill", "country": "E",
68
+ "type_name": "County council electoral division", "generation_low": 3, "country_name":
69
+ "England", "type": "CED"}, "97162": {"parent_area": null, "generation_high":
70
+ 20, "all_names": {}, "id": 97162, "codes": {"ons": "E01031021"}, "name": "North
71
+ Warwickshire 006C", "country": "E", "type_name": "Lower Layer Super Output
72
+ Area (Full)", "generation_low": 13, "country_name": "England", "type": "OLF"},
73
+ "131540": {"parent_area": null, "generation_high": 20, "all_names": {}, "id":
74
+ 131540, "codes": {"ons": "E01031021"}, "name": "North Warwickshire 006C",
75
+ "country": "E", "type_name": "Lower Layer Super Output Area (Generalised)",
76
+ "generation_low": 13, "country_name": "England", "type": "OLG"}, "7606": {"parent_area":
77
+ 2458, "generation_high": 20, "all_names": {}, "id": 7606, "codes": {"ons":
78
+ "44UBGC", "gss": "E05007463", "unit_id": "10113"}, "name": "Coleshill South",
79
+ "country": "E", "type_name": "District council ward", "generation_low": 1,
80
+ "country_name": "England", "type": "DIW"}, "55160": {"parent_area": 2458,
81
+ "generation_high": 20, "all_names": {}, "id": 55160, "codes": {"ons": "44UB010",
82
+ "gss": "E04009636", "unit_id": "10183"}, "name": "Coleshill", "country": "E",
83
+ "type_name": "Civil parish/community", "generation_low": 12, "country_name":
84
+ "England", "type": "CPC"}, "47546": {"parent_area": null, "generation_high":
85
+ 20, "all_names": {}, "id": 47546, "codes": {"ons": "E02006473"}, "name": "North
86
+ Warwickshire 006", "country": "E", "type_name": "Middle Layer Super Output
87
+ Area (Generalised)", "generation_low": 13, "country_name": "England", "type":
88
+ "OMG"}, "2458": {"parent_area": null, "generation_high": 20, "all_names":
89
+ {}, "id": 2458, "codes": {"ons": "44UB", "gss": "E07000218", "unit_id": "10124"},
90
+ "name": "North Warwickshire Borough Council", "country": "E", "type_name":
91
+ "District council", "generation_low": 1, "country_name": "England", "type":
92
+ "DIS"}, "900000": {"parent_area": null, "generation_high": 19, "all_names":
93
+ {}, "id": 900000, "codes": {}, "name": "House of Commons", "country": "",
94
+ "type_name": "UK Parliament", "generation_low": 1, "country_name": "-", "type":
95
+ "WMP"}}, "northing": 288805}'
96
+ http_version: '1.1'
97
+ recorded_at: Tue, 17 Sep 2013 14:44:17 GMT
98
+ - request:
99
+ method: get
100
+ uri: http://mapit.mysociety.org/point/4326/-1.706805276569471,52.49678940995588
101
+ body:
102
+ encoding: US-ASCII
103
+ string: ''
104
+ headers:
105
+ accept:
106
+ - ! '*/*'
107
+ user-agent:
108
+ - Ruby
109
+ response:
110
+ status:
111
+ code: 200
112
+ message: OK
113
+ headers:
114
+ expires:
115
+ - Tue, 15 Oct 2013 13:20:51 GMT
116
+ vary:
117
+ - Cookie,Accept-Encoding
118
+ etag:
119
+ - ! '"dd54c79a7ffa9ada97f196e2b607b2e1;gzip"'
120
+ cache-control:
121
+ - max-age=2419200
122
+ access-control-allow-origin:
123
+ - ! '*'
124
+ last-modified:
125
+ - Tue, 17 Sep 2013 13:20:51 GMT
126
+ content-type:
127
+ - application/json; charset=utf-8
128
+ x-url:
129
+ - /point/4326/-1.706805276569471,52.49678940995588
130
+ transfer-encoding:
131
+ - chunked
132
+ date:
133
+ - Tue, 17 Sep 2013 14:44:17 GMT
134
+ age:
135
+ - '5006'
136
+ connection:
137
+ - keep-alive
138
+ body:
139
+ encoding: US-ASCII
140
+ string: ! '{"40352": {"parent_area": null, "generation_high": 20, "all_names":
141
+ {}, "id": 40352, "codes": {"ons": "E02006473"}, "name": "North Warwickshire
142
+ 006", "country": "E", "type_name": "Middle Layer Super Output Area (Full)",
143
+ "generation_low": 13, "country_name": "England", "type": "OMF"}, "11809":
144
+ {"parent_area": null, "generation_high": 20, "all_names": {}, "id": 11809,
145
+ "codes": {"ons": "05", "gss": "E15000005", "unit_id": "41426"}, "name": "West
146
+ Midlands", "country": "E", "type_name": "European region", "generation_low":
147
+ 1, "country_name": "England", "type": "EUR"}, "2243": {"parent_area": null,
148
+ "generation_high": 20, "all_names": {}, "id": 2243, "codes": {"ons": "44",
149
+ "gss": "E10000031", "unit_id": "10049"}, "name": "Warwickshire County Council",
150
+ "country": "E", "type_name": "County council", "generation_low": 1, "country_name":
151
+ "England", "type": "CTY"}, "66024": {"parent_area": null, "generation_high":
152
+ 20, "all_names": {}, "id": 66024, "codes": {"gss": "E14000854", "unit_id":
153
+ "24700"}, "name": "North Warwickshire", "country": "E", "type_name": "UK Parliament
154
+ constituency", "generation_low": 13, "country_name": "England", "type": "WMC"},
155
+ "15881": {"parent_area": 2243, "generation_high": 20, "all_names": {}, "id":
156
+ 15881, "codes": {"unit_id": "10112"}, "name": "Coleshill", "country": "E",
157
+ "type_name": "County council electoral division", "generation_low": 3, "country_name":
158
+ "England", "type": "CED"}, "97162": {"parent_area": null, "generation_high":
159
+ 20, "all_names": {}, "id": 97162, "codes": {"ons": "E01031021"}, "name": "North
160
+ Warwickshire 006C", "country": "E", "type_name": "Lower Layer Super Output
161
+ Area (Full)", "generation_low": 13, "country_name": "England", "type": "OLF"},
162
+ "131540": {"parent_area": null, "generation_high": 20, "all_names": {}, "id":
163
+ 131540, "codes": {"ons": "E01031021"}, "name": "North Warwickshire 006C",
164
+ "country": "E", "type_name": "Lower Layer Super Output Area (Generalised)",
165
+ "generation_low": 13, "country_name": "England", "type": "OLG"}, "7606": {"parent_area":
166
+ 2458, "generation_high": 20, "all_names": {}, "id": 7606, "codes": {"ons":
167
+ "44UBGC", "gss": "E05007463", "unit_id": "10113"}, "name": "Coleshill South",
168
+ "country": "E", "type_name": "District council ward", "generation_low": 1,
169
+ "country_name": "England", "type": "DIW"}, "55160": {"parent_area": 2458,
170
+ "generation_high": 20, "all_names": {}, "id": 55160, "codes": {"ons": "44UB010",
171
+ "gss": "E04009636", "unit_id": "10183"}, "name": "Coleshill", "country": "E",
172
+ "type_name": "Civil parish/community", "generation_low": 12, "country_name":
173
+ "England", "type": "CPC"}, "47546": {"parent_area": null, "generation_high":
174
+ 20, "all_names": {}, "id": 47546, "codes": {"ons": "E02006473"}, "name": "North
175
+ Warwickshire 006", "country": "E", "type_name": "Middle Layer Super Output
176
+ Area (Generalised)", "generation_low": 13, "country_name": "England", "type":
177
+ "OMG"}, "2458": {"parent_area": null, "generation_high": 20, "all_names":
178
+ {}, "id": 2458, "codes": {"ons": "44UB", "gss": "E07000218", "unit_id": "10124"},
179
+ "name": "North Warwickshire Borough Council", "country": "E", "type_name":
180
+ "District council", "generation_low": 1, "country_name": "England", "type":
181
+ "DIS"}}'
182
+ http_version: '1.1'
183
+ recorded_at: Tue, 17 Sep 2013 14:44:18 GMT
184
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,179 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://mapit.mysociety.org/postcode/SW1A1AA
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept:
11
+ - ! '*/*'
12
+ user-agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ expires:
20
+ - Thu, 26 Sep 2013 12:29:30 GMT
21
+ vary:
22
+ - Cookie,Accept-Encoding
23
+ etag:
24
+ - ! '"2e5ca6db5b6ac0a3f008b0293a20a095;gzip"'
25
+ cache-control:
26
+ - max-age=2419200
27
+ access-control-allow-origin:
28
+ - ! '*'
29
+ last-modified:
30
+ - Thu, 29 Aug 2013 12:29:30 GMT
31
+ content-type:
32
+ - application/json; charset=utf-8
33
+ x-url:
34
+ - /postcode/SW1A1AA
35
+ transfer-encoding:
36
+ - chunked
37
+ date:
38
+ - Tue, 17 Sep 2013 14:44:15 GMT
39
+ age:
40
+ - '1649686'
41
+ connection:
42
+ - keep-alive
43
+ body:
44
+ encoding: US-ASCII
45
+ string: ! '{"wgs84_lat": 51.501009611553926, "coordsyst": "G", "shortcuts":
46
+ {"WMC": 65759, "ward": 8569, "council": 2504}, "wgs84_lon": -0.14158706711000901,
47
+ "postcode": "SW1A 1AA", "easting": 529090, "areas": {"900000": {"parent_area":
48
+ null, "generation_high": 19, "all_names": {}, "id": 900000, "codes": {}, "name":
49
+ "House of Commons", "country": "", "type_name": "UK Parliament", "generation_low":
50
+ 1, "country_name": "-", "type": "WMP"}, "900001": {"parent_area": null, "generation_high":
51
+ 20, "all_names": {}, "id": 900001, "codes": {}, "name": "European Parliament",
52
+ "country": "", "type_name": "European Parliament", "generation_low": 1, "country_name":
53
+ "-", "type": "EUP"}, "42050": {"parent_area": null, "generation_high": 20,
54
+ "all_names": {}, "id": 42050, "codes": {"ons": "E02000977"}, "name": "Westminster
55
+ 018", "country": "E", "type_name": "Middle Layer Super Output Area (Generalised)",
56
+ "generation_low": 13, "country_name": "England", "type": "OMG"}, "900006":
57
+ {"parent_area": null, "generation_high": 20, "all_names": {}, "id": 900006,
58
+ "codes": {}, "name": "London Assembly", "country": "E", "type_name": "London
59
+ Assembly area", "generation_low": 1, "country_name": "England", "type": "LAS"},
60
+ "2247": {"parent_area": null, "generation_high": 20, "all_names": {}, "id":
61
+ 2247, "codes": {"unit_id": "41441"}, "name": "Greater London Authority", "country":
62
+ "E", "type_name": "Greater London Authority", "generation_low": 1, "country_name":
63
+ "England", "type": "GLA"}, "34856": {"parent_area": null, "generation_high":
64
+ 20, "all_names": {}, "id": 34856, "codes": {"ons": "E02000977"}, "name": "Westminster
65
+ 018", "country": "E", "type_name": "Middle Layer Super Output Area (Full)",
66
+ "generation_low": 13, "country_name": "England", "type": "OMF"}, "105255":
67
+ {"parent_area": null, "generation_high": 20, "all_names": {}, "id": 105255,
68
+ "codes": {"ons": "E01004736"}, "name": "Westminster 018C", "country": "E",
69
+ "type_name": "Lower Layer Super Output Area (Generalised)", "generation_low":
70
+ 13, "country_name": "England", "type": "OLG"}, "900002": {"parent_area": 900006,
71
+ "generation_high": 20, "all_names": {}, "id": 900002, "codes": {}, "name":
72
+ "London Assembly", "country": "E", "type_name": "London Assembly area (shared)",
73
+ "generation_low": 1, "country_name": "England", "type": "LAE"}, "2504": {"parent_area":
74
+ null, "generation_high": 20, "all_names": {}, "id": 2504, "codes": {"ons":
75
+ "00BK", "gss": "E09000033", "unit_id": "11164"}, "name": "Westminster City
76
+ Council", "country": "E", "type_name": "London borough", "generation_low":
77
+ 1, "country_name": "England", "type": "LBO"}, "11828": {"parent_area": 2247,
78
+ "generation_high": 20, "all_names": {}, "id": 11828, "codes": {"gss": "E32000014",
79
+ "unit_id": "41449"}, "name": "West Central", "country": "E", "type_name":
80
+ "London Assembly constituency", "generation_low": 1, "country_name": "England",
81
+ "type": "LAC"}, "8569": {"parent_area": 2504, "generation_high": 20, "all_names":
82
+ {}, "id": 8569, "codes": {"ons": "00BKGQ", "gss": "E05000644", "unit_id":
83
+ "11162"}, "name": "St James''s", "country": "E", "type_name": "London borough
84
+ ward", "generation_low": 1, "country_name": "England", "type": "LBW"}, "70877":
85
+ {"parent_area": null, "generation_high": 20, "all_names": {}, "id": 70877,
86
+ "codes": {"ons": "E01004736"}, "name": "Westminster 018C", "country": "E",
87
+ "type_name": "Lower Layer Super Output Area (Full)", "generation_low": 13,
88
+ "country_name": "England", "type": "OLF"}, "11806": {"parent_area": null,
89
+ "generation_high": 20, "all_names": {}, "id": 11806, "codes": {"ons": "07",
90
+ "gss": "E15000007", "unit_id": "41428"}, "name": "London", "country": "E",
91
+ "type_name": "European region", "generation_low": 1, "country_name": "England",
92
+ "type": "EUR"}, "65759": {"parent_area": null, "generation_high": 20, "all_names":
93
+ {}, "id": 65759, "codes": {"gss": "E14000639", "unit_id": "25040"}, "name":
94
+ "Cities of London and Westminster", "country": "E", "type_name": "UK Parliament
95
+ constituency", "generation_low": 13, "country_name": "England", "type": "WMC"}},
96
+ "northing": 179645}'
97
+ http_version: '1.1'
98
+ recorded_at: Tue, 17 Sep 2013 14:44:15 GMT
99
+ - request:
100
+ method: get
101
+ uri: http://mapit.mysociety.org/point/4326/-0.141587067110009,51.501009611553926
102
+ body:
103
+ encoding: US-ASCII
104
+ string: ''
105
+ headers:
106
+ accept:
107
+ - ! '*/*'
108
+ user-agent:
109
+ - Ruby
110
+ response:
111
+ status:
112
+ code: 200
113
+ message: OK
114
+ headers:
115
+ expires:
116
+ - Tue, 15 Oct 2013 11:11:05 GMT
117
+ vary:
118
+ - Cookie,Accept-Encoding
119
+ etag:
120
+ - ! '"017a7a0a2be950c74ec3e27e78a9de30;gzip"'
121
+ cache-control:
122
+ - max-age=2419200
123
+ access-control-allow-origin:
124
+ - ! '*'
125
+ last-modified:
126
+ - Tue, 17 Sep 2013 11:11:05 GMT
127
+ content-type:
128
+ - application/json; charset=utf-8
129
+ x-url:
130
+ - /point/4326/-0.141587067110009,51.501009611553926
131
+ transfer-encoding:
132
+ - chunked
133
+ date:
134
+ - Tue, 17 Sep 2013 14:44:15 GMT
135
+ age:
136
+ - '12791'
137
+ connection:
138
+ - keep-alive
139
+ body:
140
+ encoding: US-ASCII
141
+ string: ! '{"42050": {"parent_area": null, "generation_high": 20, "all_names":
142
+ {}, "id": 42050, "codes": {"ons": "E02000977"}, "name": "Westminster 018",
143
+ "country": "E", "type_name": "Middle Layer Super Output Area (Generalised)",
144
+ "generation_low": 13, "country_name": "England", "type": "OMG"}, "2247": {"parent_area":
145
+ null, "generation_high": 20, "all_names": {}, "id": 2247, "codes": {"unit_id":
146
+ "41441"}, "name": "Greater London Authority", "country": "E", "type_name":
147
+ "Greater London Authority", "generation_low": 1, "country_name": "England",
148
+ "type": "GLA"}, "34856": {"parent_area": null, "generation_high": 20, "all_names":
149
+ {}, "id": 34856, "codes": {"ons": "E02000977"}, "name": "Westminster 018",
150
+ "country": "E", "type_name": "Middle Layer Super Output Area (Full)", "generation_low":
151
+ 13, "country_name": "England", "type": "OMF"}, "105255": {"parent_area": null,
152
+ "generation_high": 20, "all_names": {}, "id": 105255, "codes": {"ons": "E01004736"},
153
+ "name": "Westminster 018C", "country": "E", "type_name": "Lower Layer Super
154
+ Output Area (Generalised)", "generation_low": 13, "country_name": "England",
155
+ "type": "OLG"}, "2504": {"parent_area": null, "generation_high": 20, "all_names":
156
+ {}, "id": 2504, "codes": {"ons": "00BK", "gss": "E09000033", "unit_id": "11164"},
157
+ "name": "Westminster City Council", "country": "E", "type_name": "London borough",
158
+ "generation_low": 1, "country_name": "England", "type": "LBO"}, "11828": {"parent_area":
159
+ 2247, "generation_high": 20, "all_names": {}, "id": 11828, "codes": {"gss":
160
+ "E32000014", "unit_id": "41449"}, "name": "West Central", "country": "E",
161
+ "type_name": "London Assembly constituency", "generation_low": 1, "country_name":
162
+ "England", "type": "LAC"}, "8569": {"parent_area": 2504, "generation_high":
163
+ 20, "all_names": {}, "id": 8569, "codes": {"ons": "00BKGQ", "gss": "E05000644",
164
+ "unit_id": "11162"}, "name": "St James''s", "country": "E", "type_name": "London
165
+ borough ward", "generation_low": 1, "country_name": "England", "type": "LBW"},
166
+ "70877": {"parent_area": null, "generation_high": 20, "all_names": {}, "id":
167
+ 70877, "codes": {"ons": "E01004736"}, "name": "Westminster 018C", "country":
168
+ "E", "type_name": "Lower Layer Super Output Area (Full)", "generation_low":
169
+ 13, "country_name": "England", "type": "OLF"}, "11806": {"parent_area": null,
170
+ "generation_high": 20, "all_names": {}, "id": 11806, "codes": {"ons": "07",
171
+ "gss": "E15000007", "unit_id": "41428"}, "name": "London", "country": "E",
172
+ "type_name": "European region", "generation_low": 1, "country_name": "England",
173
+ "type": "EUR"}, "65759": {"parent_area": null, "generation_high": 20, "all_names":
174
+ {}, "id": 65759, "codes": {"gss": "E14000639", "unit_id": "25040"}, "name":
175
+ "Cities of London and Westminster", "country": "E", "type_name": "UK Parliament
176
+ constituency", "generation_low": 13, "country_name": "England", "type": "WMC"}}'
177
+ http_version: '1.1'
178
+ recorded_at: Tue, 17 Sep 2013 14:44:16 GMT
179
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+
3
+ describe MySociety::MapIt::Postcode do
4
+
5
+ it "correctly normalises a postcode", :vcr do
6
+ p = MySociety::MapIt::Postcode.new 'b46 3ld'
7
+ p.normalised_postcode.should == "B463LD"
8
+ end
9
+
10
+ it "gives a correct lat/lng for a postcode", :vcr do
11
+ p = MySociety::MapIt::Postcode.new 'b463ld'
12
+ p.to_point.y.should == -1.706805276569471
13
+ p.to_point.x.should == 52.49678940995588
14
+ end
15
+
16
+ it "gives a correct ward", :vcr do
17
+ p = MySociety::MapIt::Postcode.new 'b463ld'
18
+ p.ward.name.should == "Coleshill South"
19
+ end
20
+
21
+ it "gives a correct gss code for a ward", :vcr do
22
+ p = MySociety::MapIt::Postcode.new 'b463ld'
23
+ p.ward.gss.should == "E05007463"
24
+ end
25
+
26
+ context "two tier" do
27
+
28
+ before :all, :vcr do
29
+ @p = MySociety::MapIt::Postcode.new 'b463ld'
30
+ end
31
+
32
+ it "correctly identifies a two tier local authority", :vcr do
33
+ @p.two_tier?.should be_true
34
+ end
35
+
36
+ it "gives a correct district council", :vcr do
37
+ @p.district.name.should == "North Warwickshire Borough Council"
38
+ end
39
+
40
+ it "gives a correct district council gss code", :vcr do
41
+ @p.district.gss.should == "E07000218"
42
+ end
43
+
44
+ it "gives a correct county council", :vcr do
45
+ @p.county.name.should == "Warwickshire County Council"
46
+ end
47
+
48
+ it "gives a correct county council gss code", :vcr do
49
+ @p.county.gss.should == "E10000031"
50
+ end
51
+
52
+ it "returns a hash when asked for a local authority", :vcr do
53
+ @p.local_authority.kind_of?(Hash).should be_true
54
+ end
55
+
56
+ end
57
+
58
+ context "single tier" do
59
+
60
+ before :all, :vcr do
61
+ @p = MySociety::MapIt::Postcode.new 'sw1a1aa'
62
+ end
63
+
64
+ it "correctly identifies a single tier local authority", :vcr do
65
+ @p.two_tier?.should be_false
66
+ end
67
+
68
+ it "returns the correct local authority", :vcr do
69
+ @p.local_authority.name.should == "Westminster City Council"
70
+ end
71
+
72
+ it "returns the correct local authority gss code", :vcr do
73
+ @p.local_authority.gss.should == "E09000033"
74
+ end
75
+
76
+ end
77
+
78
+ context "with parish" do
79
+
80
+ it "returns the correct parish", :vcr do
81
+ p = MySociety::MapIt::Postcode.new 'b463ld'
82
+ p.parish.name.should == "Coleshill"
83
+ end
84
+
85
+ end
86
+
87
+ context "without parish" do
88
+
89
+ it "returns the nil for a parish", :vcr do
90
+ p = MySociety::MapIt::Postcode.new 'sw1a1aa'
91
+ p.parish.should be_nil
92
+ end
93
+
94
+ end
95
+
96
+ end