twfy 1.0.1 → 1.1.0

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.
@@ -0,0 +1,240 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.theyworkforyou.com/api/getMP?key=<API_KEY>&postcode=IP6%209PN&version=1.0.0
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Last-Modified:
22
+ - Fri, 07 May 2010 02:51:26 +0100
23
+ Content-Type:
24
+ - text/javascript; charset=iso-8859-1
25
+ X-Url:
26
+ - /api/getMP?postcode=IP6+9PN&key=<API_KEY>&version=1.0.0
27
+ Content-Length:
28
+ - '506'
29
+ Accept-Ranges:
30
+ - bytes
31
+ Date:
32
+ - Wed, 13 Nov 2013 00:52:16 GMT
33
+ Age:
34
+ - '3'
35
+ Connection:
36
+ - keep-alive
37
+ body:
38
+ encoding: UTF-8
39
+ string: '{"member_id":"40156","house":"1","first_name":"Daniel","last_name":"Poulter","constituency":"Central
40
+ Suffolk and North Ipswich","party":"Conservative","entered_house":"2010-05-06","left_house":"9999-12-31","entered_reason":"general_election","left_reason":"still_in_office","person_id":"24756","title":"","lastupdate":"2010-05-07
41
+ 02:51:26","full_name":"Daniel Poulter","url":"/mp/24756/daniel_poulter/central_suffolk_and_north_ipswich","image":"/images/mpsL/24756.jpeg","image_height":118,"image_width":78}'
42
+ http_version:
43
+ recorded_at: Wed, 13 Nov 2013 00:52:16 GMT
44
+ - request:
45
+ method: get
46
+ uri: http://www.theyworkforyou.com/api/getGeometry?key=<API_KEY>&name=Central%20Suffolk%20and%20North%20Ipswich&version=1.0.0
47
+ body:
48
+ encoding: US-ASCII
49
+ string: ''
50
+ headers:
51
+ Accept-Encoding:
52
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
53
+ Accept:
54
+ - '*/*'
55
+ User-Agent:
56
+ - Ruby
57
+ response:
58
+ status:
59
+ code: 200
60
+ message: OK
61
+ headers:
62
+ Content-Type:
63
+ - text/javascript; charset=iso-8859-1
64
+ X-Url:
65
+ - /api/getGeometry?name=Central+Suffolk+and+North+Ipswich&key=<API_KEY>&version=1.0.0
66
+ Content-Length:
67
+ - '359'
68
+ Accept-Ranges:
69
+ - bytes
70
+ Date:
71
+ - Wed, 13 Nov 2013 00:52:16 GMT
72
+ Age:
73
+ - '4'
74
+ Connection:
75
+ - keep-alive
76
+ body:
77
+ encoding: UTF-8
78
+ string: '{"max_e":636672.1,"srid_en":27700,"area":796226596.18,"max_n":283760.6,"min_lat":52.0407410207,"max_lat":52.4044029233,"centre_n":263028.158509,"max_lon":1.46434493435,"centre_lon":1.22112407587,"min_n":242895.4,"parts":1,"centre_e":620106.539681,"min_e":602204.5,"min_lon":0.951515301231,"centre_lat":52.2215670245,"name":"Central
79
+ Suffolk and North Ipswich"}'
80
+ http_version:
81
+ recorded_at: Wed, 13 Nov 2013 00:52:17 GMT
82
+ - request:
83
+ method: get
84
+ uri: http://www.theyworkforyou.com/api/getMPInfo?id=24756&key=<API_KEY>&version=1.0.0
85
+ body:
86
+ encoding: US-ASCII
87
+ string: ''
88
+ headers:
89
+ Accept-Encoding:
90
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
91
+ Accept:
92
+ - '*/*'
93
+ User-Agent:
94
+ - Ruby
95
+ response:
96
+ status:
97
+ code: 200
98
+ message: OK
99
+ headers:
100
+ Last-Modified:
101
+ - Tue, 12 Nov 2013 03:38:59 +0000
102
+ Content-Type:
103
+ - text/javascript; charset=iso-8859-1
104
+ X-Url:
105
+ - /api/getMPInfo?id=24756&key=<API_KEY>&version=1.0.0
106
+ Content-Length:
107
+ - '6072'
108
+ Accept-Ranges:
109
+ - bytes
110
+ Date:
111
+ - Wed, 13 Nov 2013 00:52:16 GMT
112
+ Age:
113
+ - '4'
114
+ Connection:
115
+ - keep-alive
116
+ body:
117
+ encoding: UTF-8
118
+ string: '{"comments_on_speeches":"2","comments_on_speeches_quintile":"3","comments_on_speeches_rank":"450","comments_on_speeches_rank_joint":"48","comments_on_speeches_rank_outof":"650","debate_sectionsspoken_inlastyear":"32","debate_sectionsspoken_inlastyear_quintile":"2","debate_sectionsspoken_inlastyear_rank":"314","debate_sectionsspoken_inlastyear_rank_joint":"8","debate_sectionsspoken_inlastyear_rank_outof":"650","maiden_speech":"uk.org.publicwhip/debate/2010-06-22c.151.6","public_whip_dreammp1052_absent":"0","public_whip_dreammp1052_both_voted":"2","public_whip_dreammp1052_distance":"0","public_whip_dreammp1053_absent":"0","public_whip_dreammp1053_both_voted":"1","public_whip_dreammp1053_distance":"0","public_whip_dreammp1065_absent":"0","public_whip_dreammp1065_both_voted":"4","public_whip_dreammp1065_distance":"0.0833333","public_whip_dreammp1074_absent":"1","public_whip_dreammp1074_both_voted":"10","public_whip_dreammp1074_distance":"0.0641026","public_whip_dreammp1084_absent":"0","public_whip_dreammp1084_both_voted":"1","public_whip_dreammp1084_distance":"1","public_whip_dreammp1109_absent":"0","public_whip_dreammp1109_both_voted":"2","public_whip_dreammp1109_distance":"0","public_whip_dreammp1110_absent":"0","public_whip_dreammp1110_both_voted":"10","public_whip_dreammp1110_distance":"0","public_whip_dreammp1124_absent":"0","public_whip_dreammp1124_both_voted":"1","public_whip_dreammp1124_distance":"0","public_whip_dreammp1132_absent":"0","public_whip_dreammp1132_both_voted":"1","public_whip_dreammp1132_distance":"0","public_whip_dreammp811_absent":"0","public_whip_dreammp811_both_voted":"1","public_whip_dreammp811_distance":"0","public_whip_dreammp826_absent":"0","public_whip_dreammp826_both_voted":"4","public_whip_dreammp826_distance":"0","public_whip_dreammp984_absent":"0","public_whip_dreammp984_both_voted":"1","public_whip_dreammp984_distance":"0","reading_ease":"47.0414979003198","reading_ease_quintile":"4","reading_ease_rank":"534","reading_ease_rank_outof":"645","reading_year":"14.2795015913675","reading_year_quintile":"0","reading_year_rank":"81","reading_year_rank_outof":"645","register_member_interests_date":"2013-10-28","register_member_interests_html":"<div
119
+ class=\"regmemcategory\">2. Remunerated employment, office, profession etc</div>\n<div
120
+ class=\"regmemitem\"> Medical doctor</div>\n","select_committees":"0","select_committees_chair":"0","three_word_alliterations":"167","three_word_alliterations_quintile":"2","three_word_alliterations_rank":"363","three_word_alliterations_rank_joint":"2","three_word_alliterations_rank_outof":"650","three_word_alliteration_content":":to
121
+ take to:will work with:make my maiden:true that throughout:he has had:that
122
+ the treatment:it is important:that the true:the time that:the time to:and
123
+ about a:to trust them:it is impossible:think that there:should support such:to
124
+ tailor their:has he had:is invest in:it is important:to talk to:profit per
125
+ pig:it is important:onus on our:when we were:time to time:industry is in:be
126
+ bad because:should show some:after an ageing:through talking therapies:on
127
+ one of:bodies being bandied:it is important:important in improving:and alcohol
128
+ abuse:to try to:whereas\n\nwhat we:if it is:when we were:thanks to the:that
129
+ the two:all agree about:that they take:which we will:the train through:to
130
+ tackle the:think that there:important issue in:it is in:it is important:to
131
+ tackle these:to tackle this:it is important:tribute to the:it is important:investment
132
+ in increasing:support system should:women whom we:save social services:it
133
+ is important:the time that:specialist surgical services:it is important:it
134
+ is important:it is important:it is important:together to try:it is important:and
135
+ as a:work with women:way we would:at an average:has huge health:it is important:workers
136
+ who work:be brought back:party political points:not necessarily need:tribute
137
+ to the:it is important:why we would:trusts throughout the:interest in it:that
138
+ these things:also attracted attention:to travel to:important it is:the time
139
+ they:taking the time:turn to the:are available across:tribute to the:to talk
140
+ to:training thanks to:it is important:to tackle the:are already available:and
141
+ an ageing:reducing readmission rates:tribute to the:it is important:together
142
+ to talk:are at a:say something specifically:to try to:to take things:to their
143
+ task:to the trust:to talk through:operate out of:transfer times to:that the
144
+ trust:that the trust:thought that the:accrued as a:that trust to:that the
145
+ time:and accident and:to the table:to tackle that:it is irresponsible:the
146
+ talking therapies:it is important:and at a:it is important:testament to the:against
147
+ accident and:it is important:an accident and:it is ironic:that the trust:is
148
+ important in:it is important:to the task:tribute to the:funding formula for:formula
149
+ for funding:appointed as a:true that tariff:tribute to the:is implicit in:to
150
+ the topics:to their task:investing in integration:the trust to:that the trust:the
151
+ trust to:to talk through:tribute to the:are also amending:about as a:to talk
152
+ that:and are a:are anticipating a:and an ageing:issues in improving:tools
153
+ that the:to talk this:tribute to the:thanks to the:what went wrong:to try
154
+ to:thanks to the:to tackle them:it is important:and appropriate and:trying
155
+ to tighten","wikipedia_url":"http://en.wikipedia.org/wiki/Daniel_Poulter","wrans_answered_inlastyear":"1291","wrans_asked_inlastyear":"0","wrans_asked_inlastyear_quintile":"4","wrans_asked_inlastyear_rank":"525","wrans_asked_inlastyear_rank_joint":"126","wrans_asked_inlastyear_rank_outof":"650","wrans_departments":"Health,
156
+ Education, Environment Food and Rural Affairs, Energy and Climate Change,
157
+ Transport","wrans_subjects":"Poultry: Animal Welfare, General Practitioners,
158
+ NHS: Pensions, Ambulance Services: Standards, NHS: Drugs","by_member_id":{"40156":{"public_whip_division_attendance":"81.52%","public_whip_data_date":"2013-11-08","public_whip_rebellions":"1.92%","public_whip_rebelrank":"108","public_whip_attendrank":"163","public_whip_rebelrank_outof":"643","public_whip_attendrank_outof":"650"}}}'
159
+ http_version:
160
+ recorded_at: Wed, 13 Nov 2013 00:52:17 GMT
161
+ - request:
162
+ method: get
163
+ uri: http://www.theyworkforyou.com/api/getMPInfo?id=24756&key=<API_KEY>&version=1.0.0
164
+ body:
165
+ encoding: US-ASCII
166
+ string: ''
167
+ headers:
168
+ Accept-Encoding:
169
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
170
+ Accept:
171
+ - '*/*'
172
+ User-Agent:
173
+ - Ruby
174
+ response:
175
+ status:
176
+ code: 200
177
+ message: OK
178
+ headers:
179
+ Last-Modified:
180
+ - Tue, 12 Nov 2013 03:38:59 +0000
181
+ Content-Type:
182
+ - text/javascript; charset=iso-8859-1
183
+ X-Url:
184
+ - /api/getMPInfo?id=24756&key=<API_KEY>&version=1.0.0
185
+ Content-Length:
186
+ - '6072'
187
+ Accept-Ranges:
188
+ - bytes
189
+ Date:
190
+ - Wed, 13 Nov 2013 00:52:17 GMT
191
+ Age:
192
+ - '4'
193
+ Connection:
194
+ - keep-alive
195
+ body:
196
+ encoding: UTF-8
197
+ string: '{"comments_on_speeches":"2","comments_on_speeches_quintile":"3","comments_on_speeches_rank":"450","comments_on_speeches_rank_joint":"48","comments_on_speeches_rank_outof":"650","debate_sectionsspoken_inlastyear":"32","debate_sectionsspoken_inlastyear_quintile":"2","debate_sectionsspoken_inlastyear_rank":"314","debate_sectionsspoken_inlastyear_rank_joint":"8","debate_sectionsspoken_inlastyear_rank_outof":"650","maiden_speech":"uk.org.publicwhip/debate/2010-06-22c.151.6","public_whip_dreammp1052_absent":"0","public_whip_dreammp1052_both_voted":"2","public_whip_dreammp1052_distance":"0","public_whip_dreammp1053_absent":"0","public_whip_dreammp1053_both_voted":"1","public_whip_dreammp1053_distance":"0","public_whip_dreammp1065_absent":"0","public_whip_dreammp1065_both_voted":"4","public_whip_dreammp1065_distance":"0.0833333","public_whip_dreammp1074_absent":"1","public_whip_dreammp1074_both_voted":"10","public_whip_dreammp1074_distance":"0.0641026","public_whip_dreammp1084_absent":"0","public_whip_dreammp1084_both_voted":"1","public_whip_dreammp1084_distance":"1","public_whip_dreammp1109_absent":"0","public_whip_dreammp1109_both_voted":"2","public_whip_dreammp1109_distance":"0","public_whip_dreammp1110_absent":"0","public_whip_dreammp1110_both_voted":"10","public_whip_dreammp1110_distance":"0","public_whip_dreammp1124_absent":"0","public_whip_dreammp1124_both_voted":"1","public_whip_dreammp1124_distance":"0","public_whip_dreammp1132_absent":"0","public_whip_dreammp1132_both_voted":"1","public_whip_dreammp1132_distance":"0","public_whip_dreammp811_absent":"0","public_whip_dreammp811_both_voted":"1","public_whip_dreammp811_distance":"0","public_whip_dreammp826_absent":"0","public_whip_dreammp826_both_voted":"4","public_whip_dreammp826_distance":"0","public_whip_dreammp984_absent":"0","public_whip_dreammp984_both_voted":"1","public_whip_dreammp984_distance":"0","reading_ease":"47.0414979003198","reading_ease_quintile":"4","reading_ease_rank":"534","reading_ease_rank_outof":"645","reading_year":"14.2795015913675","reading_year_quintile":"0","reading_year_rank":"81","reading_year_rank_outof":"645","register_member_interests_date":"2013-10-28","register_member_interests_html":"<div
198
+ class=\"regmemcategory\">2. Remunerated employment, office, profession etc</div>\n<div
199
+ class=\"regmemitem\"> Medical doctor</div>\n","select_committees":"0","select_committees_chair":"0","three_word_alliterations":"167","three_word_alliterations_quintile":"2","three_word_alliterations_rank":"363","three_word_alliterations_rank_joint":"2","three_word_alliterations_rank_outof":"650","three_word_alliteration_content":":to
200
+ take to:will work with:make my maiden:true that throughout:he has had:that
201
+ the treatment:it is important:that the true:the time that:the time to:and
202
+ about a:to trust them:it is impossible:think that there:should support such:to
203
+ tailor their:has he had:is invest in:it is important:to talk to:profit per
204
+ pig:it is important:onus on our:when we were:time to time:industry is in:be
205
+ bad because:should show some:after an ageing:through talking therapies:on
206
+ one of:bodies being bandied:it is important:important in improving:and alcohol
207
+ abuse:to try to:whereas\n\nwhat we:if it is:when we were:thanks to the:that
208
+ the two:all agree about:that they take:which we will:the train through:to
209
+ tackle the:think that there:important issue in:it is in:it is important:to
210
+ tackle these:to tackle this:it is important:tribute to the:it is important:investment
211
+ in increasing:support system should:women whom we:save social services:it
212
+ is important:the time that:specialist surgical services:it is important:it
213
+ is important:it is important:it is important:together to try:it is important:and
214
+ as a:work with women:way we would:at an average:has huge health:it is important:workers
215
+ who work:be brought back:party political points:not necessarily need:tribute
216
+ to the:it is important:why we would:trusts throughout the:interest in it:that
217
+ these things:also attracted attention:to travel to:important it is:the time
218
+ they:taking the time:turn to the:are available across:tribute to the:to talk
219
+ to:training thanks to:it is important:to tackle the:are already available:and
220
+ an ageing:reducing readmission rates:tribute to the:it is important:together
221
+ to talk:are at a:say something specifically:to try to:to take things:to their
222
+ task:to the trust:to talk through:operate out of:transfer times to:that the
223
+ trust:that the trust:thought that the:accrued as a:that trust to:that the
224
+ time:and accident and:to the table:to tackle that:it is irresponsible:the
225
+ talking therapies:it is important:and at a:it is important:testament to the:against
226
+ accident and:it is important:an accident and:it is ironic:that the trust:is
227
+ important in:it is important:to the task:tribute to the:funding formula for:formula
228
+ for funding:appointed as a:true that tariff:tribute to the:is implicit in:to
229
+ the topics:to their task:investing in integration:the trust to:that the trust:the
230
+ trust to:to talk through:tribute to the:are also amending:about as a:to talk
231
+ that:and are a:are anticipating a:and an ageing:issues in improving:tools
232
+ that the:to talk this:tribute to the:thanks to the:what went wrong:to try
233
+ to:thanks to the:to tackle them:it is important:and appropriate and:trying
234
+ to tighten","wikipedia_url":"http://en.wikipedia.org/wiki/Daniel_Poulter","wrans_answered_inlastyear":"1291","wrans_asked_inlastyear":"0","wrans_asked_inlastyear_quintile":"4","wrans_asked_inlastyear_rank":"525","wrans_asked_inlastyear_rank_joint":"126","wrans_asked_inlastyear_rank_outof":"650","wrans_departments":"Health,
235
+ Education, Environment Food and Rural Affairs, Energy and Climate Change,
236
+ Transport","wrans_subjects":"Poultry: Animal Welfare, General Practitioners,
237
+ NHS: Pensions, Ambulance Services: Standards, NHS: Drugs","by_member_id":{"40156":{"public_whip_division_attendance":"81.52%","public_whip_data_date":"2013-11-08","public_whip_rebellions":"1.92%","public_whip_rebelrank":"108","public_whip_attendrank":"163","public_whip_rebelrank_outof":"643","public_whip_attendrank_outof":"650"}}}'
238
+ http_version:
239
+ recorded_at: Wed, 13 Nov 2013 00:52:18 GMT
240
+ recorded_with: VCR 2.5.0
@@ -1,27 +1,25 @@
1
- require 'test/unit'
2
- require File.join(File.dirname(__FILE__), '../lib/twfy')
1
+ require "test_helper"
3
2
 
4
- class BasicReturnedDataTest < Test::Unit::TestCase
5
-
6
- API_KEY_LOCATION = File.join(File.dirname(__FILE__), 'api_key')
3
+ class ClientTest < TwfyTest
7
4
 
8
5
  def setup
9
- api_key = File.open(API_KEY_LOCATION){ |f| f.readlines[0].chomp }
6
+ super
10
7
  @client = Twfy::Client.new(api_key)
11
8
  end
12
-
9
+
13
10
  def test_convert_url
14
- uri = @client.convert_url(:url=>'http://www.publications.parliament.uk/pa/cm200506/cmhansrd/cm061018/debtext/61018-0002.htm#06101834000471')
11
+ uri = @client.convert_url(url: 'http://www.publications.parliament.uk/pa/cm200506/cmhansrd/cm061018/debtext/61018-0002.htm#06101834000471')
15
12
  assert_kind_of URI::HTTP, uri
16
13
  assert_equal "www.theyworkforyou.com", uri.host
17
14
  end
18
-
15
+
19
16
  def test_mp_and_mp_info
20
- mp = @client.mp(:postcode=>'IP6 9PN')
17
+ mp = @client.mp(postcode: 'IP6 9PN')
21
18
  assert_kind_of Twfy::MP, mp
19
+ assert_kind_of Twfy::Constituency, mp.constituency
22
20
  assert_kind_of OpenStruct, @client.mp_info(:id=>mp.person_id)
23
21
  end
24
-
22
+
25
23
  def test_mps
26
24
  mps = @client.mps
27
25
  assert_kind_of Array, mps
@@ -37,13 +35,13 @@ class BasicReturnedDataTest < Test::Unit::TestCase
37
35
  assert_kind_of OpenStruct, msp
38
36
  end
39
37
  end
40
-
38
+
41
39
  def test_constituency_and_geometry
42
- c = @client.constituency(:postcode => 'IP6 9PN')
40
+ c = @client.constituency(postcode: 'IP6 9PN')
43
41
  assert_kind_of Twfy::Constituency, c
44
42
  assert_kind_of Twfy::Geometry, @client.geometry(:name=>c.name)
45
43
  end
46
-
44
+
47
45
  def test_constituencies
48
46
  cs = @client.constituencies
49
47
  assert_kind_of Array, cs
@@ -51,5 +49,5 @@ class BasicReturnedDataTest < Test::Unit::TestCase
51
49
  assert_kind_of Twfy::Constituency, c
52
50
  end
53
51
  end
54
-
52
+
55
53
  end
@@ -1,23 +1,20 @@
1
- require 'test/unit'
2
- require File.join(File.dirname(__FILE__), '../lib/twfy')
1
+ require "test_helper.rb"
3
2
 
4
- class ChainDataTest < Test::Unit::TestCase
5
-
6
- API_KEY_LOCATION = File.join(File.dirname(__FILE__), 'api_key')
3
+ class DataElementTest < TwfyTest
7
4
 
8
5
  def setup
9
- api_key = File.open(API_KEY_LOCATION){ |f| f.readlines[0].chomp }
6
+ super
10
7
  @client = Twfy::Client.new(api_key)
11
- @mp = @client.mp(:postcode=>'IP6 9PN')
8
+ @mp = @client.mp(postcode: 'IP6 9PN')
12
9
  end
13
-
10
+
14
11
  def test_single_chain_class
15
12
  assert_kind_of Twfy::Constituency, @mp.constituency
16
13
  c = @mp.instance_eval{ @constituency }
17
14
  assert c
18
15
  assert_kind_of Twfy::Constituency, c
19
16
  end
20
-
17
+
21
18
  def test_reflexive_chain_class
22
19
  c = @mp.constituency
23
20
  assert_kind_of Twfy::Constituency, c
@@ -26,7 +23,7 @@ class ChainDataTest < Test::Unit::TestCase
26
23
  assert c.instance_eval{ @mp }
27
24
  assert_equal mp, c.instance_eval{ @mp }
28
25
  end
29
-
26
+
30
27
  def test_round_trip_chain_class
31
28
  c = @mp.constituency
32
29
  assert_kind_of Twfy::Constituency, c
@@ -37,16 +34,15 @@ class ChainDataTest < Test::Unit::TestCase
37
34
  assert_kind_of Twfy::Constituency, c2
38
35
  assert_equal c.name, c2.name
39
36
  end
40
-
37
+
41
38
  def test_overkill_chain_class
42
39
  mp = @mp.constituency.mp.constituency.geometry.constituency.mp
43
40
  assert_kind_of Twfy::MP, mp
44
- assert_equal @mp.full_name, mp.full_name
41
+ assert_equal @mp.full_name, mp.full_name
45
42
  end
46
-
43
+
47
44
  def test_simple_chain_and_direct_call_are_equivalent
48
- assert_equal @client.mp_info(:id=>@mp.person_id), @mp.info
45
+ assert_equal @client.mp_info(id: @mp.person_id), @mp.info
49
46
  end
50
-
47
+
51
48
  end
52
-
@@ -0,0 +1,38 @@
1
+ $LOAD_PATH.push File.expand_path('../../lib', __FILE__)
2
+
3
+ require 'twfy'
4
+ require 'test/unit'
5
+ require 'vcr'
6
+
7
+ # If you need to record new episodes, run rake with:
8
+ #
9
+ # $ rake test API_KEY=YOUR-REAL-API-KEY
10
+ #
11
+ TEST_API_KEY = ENV['API_KEY'] || 'TEST_API_KEY'
12
+
13
+ VCR.configure do |c|
14
+ c.cassette_library_dir = 'test/fixtures/vcr_cassettes'
15
+ c.hook_into :webmock
16
+ c.filter_sensitive_data("<API_KEY>") { TEST_API_KEY }
17
+ c.default_cassette_options = {record: :new_episodes}
18
+ end
19
+
20
+ class TwfyTest < Test::Unit::TestCase
21
+
22
+ def api_key
23
+ @api_key ||= TEST_API_KEY
24
+ end
25
+
26
+ def setup
27
+ VCR.insert_cassette self.class.name.gsub(/::/, '/').
28
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
29
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
30
+ tr("-", "_").
31
+ downcase
32
+ end
33
+
34
+ def teardown
35
+ VCR.eject_cassette
36
+ end
37
+
38
+ end
data/twfy.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'twfy/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "twfy"
8
+ spec.version = Twfy::VERSION
9
+ spec.authors = ["Tom Hipkin", "Martin Owen", "Bruce Williams"]
10
+ spec.email = ["brwcodes@gmail.com", "tomhipkin@gmail.com"]
11
+ spec.description = "Ruby library to interface with the TheyWorkForYou API."
12
+ spec.summary = "Ruby library to interface with the TheyWorkForYou API. TheyWorkForYou.com is a non-partisan, volunteer-run website which aims to make it easy for people to keep tabs on their elected and unelected representatives in Parliament."
13
+ spec.homepage = "http://github.com/bruce/twfy"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "multi_json"
22
+ spec.add_dependency "paginator", "~> 1.2"
23
+ spec.add_development_dependency "bundler", "~> 1.3.5"
24
+ spec.add_development_dependency "json"
25
+ spec.add_development_dependency "vcr"
26
+ spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "webmock"
28
+
29
+ end