foursquare2 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
data/test/helper.rb CHANGED
@@ -9,10 +9,44 @@ rescue Bundler::BundlerError => e
9
9
  end
10
10
  require 'test/unit'
11
11
  require 'shoulda'
12
+ require 'matchy'
13
+ require 'fakeweb'
12
14
 
13
15
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
16
  $LOAD_PATH.unshift(File.dirname(__FILE__))
15
17
  require 'foursquare2'
16
18
 
19
+ FakeWeb.allow_net_connect = false
20
+
21
+ def foursquare_test_client
22
+ Foursquare2::Client.new(:oauth_token => 'yeehaw')
23
+ end
24
+
25
+ def foursquare_url(url)
26
+ url =~ /^http/ ? url : "http://api.foursquare.com/v2#{url}"
27
+ end
28
+
29
+ def fixture_file(filename)
30
+ return '' if filename == ''
31
+ file_path = File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
32
+ File.read(file_path)
33
+ end
34
+
35
+ def stub_get(url, filename, options={})
36
+ opts = {
37
+ :body => fixture_file(filename),
38
+ :content_type => 'application/json; charset=utf-8'
39
+ }.merge(options)
40
+ FakeWeb.register_uri(:get, foursquare_url(url), opts)
41
+ end
42
+
43
+ def stub_post(url, filename, options={})
44
+ opts = {
45
+ :body => fixture_file(filename),
46
+ :content_type => 'application/json; charset=utf-8'
47
+ }.merge(options)
48
+ FakeWeb.register_uri(:post, foursquare_url(url), opts)
49
+ end
50
+
17
51
  class Test::Unit::TestCase
18
52
  end
@@ -0,0 +1,26 @@
1
+ require 'helper'
2
+
3
+ class TestCheckins < Test::Unit::TestCase
4
+
5
+ context "When using the foursquare API and working with checkins" do
6
+ setup do
7
+ @client = foursquare_test_client
8
+ end
9
+
10
+ should "fetch info for a single checkin" do
11
+ stub_get("https://api.foursquare.com/v2/checkins/4d572bcc9e508cfab975189b?oauth_token=#{@client.oauth_token}", "checkin.json")
12
+ checkin = @client.checkin('4d572bcc9e508cfab975189b')
13
+ checkin.venue.name.should == 'Bridgestone Arena'
14
+ checkin.user.firstName.should == 'Matt'
15
+ end
16
+
17
+ should "fetch recent checkins from friends"do
18
+ stub_get("https://api.foursquare.com/v2/checkins/recent?oauth_token=#{@client.oauth_token}&limit=2", "friend_checkins.json")
19
+ checkins = @client.recent_checkins(:limit => 2)
20
+ checkins.count.should == 2
21
+ checkins.first.venue.name.should == 'Buffalo Billiards'
22
+ checkins.last.user.firstName.should == 'David'
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,22 @@
1
+ require 'helper'
2
+
3
+ class TestClient < Test::Unit::TestCase
4
+
5
+ context "when instantiating a client instance" do
6
+ should "use the correct url for api requests" do
7
+ @client = Foursquare2::Client.new
8
+ @client.api_url.should == 'https://api.foursquare.com/v2'
9
+ end
10
+
11
+ should "retain oauth token for requests" do
12
+ @client = Foursquare2::Client.new(:oauth_token => 'yeehaw')
13
+ @client.oauth_token.should == "yeehaw"
14
+ end
15
+
16
+ should "retain client id/secret for requests" do
17
+ @client = Foursquare2::Client.new(:client_id => 'awesome', :client_secret => 'sauce')
18
+ @client.client_id.should == 'awesome'
19
+ @client.client_secret.should == 'sauce'
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,17 @@
1
+ require 'helper'
2
+
3
+ class TestPhotos < Test::Unit::TestCase
4
+
5
+ context "When using the foursquare API and working with photos" do
6
+ setup do
7
+ @client = foursquare_test_client
8
+ end
9
+
10
+ should "fetch info for a single photo" do
11
+ stub_get("https://api.foursquare.com/v2/photos/4d0fb8162d39a340637dc42b?oauth_token=#{@client.oauth_token}", "photo.json")
12
+ photo = @client.photo('4d0fb8162d39a340637dc42b')
13
+ photo.sizes.items.count.should == 4
14
+ photo.sizes.items.first.url.should == "http://playfoursquare.s3.amazonaws.com/pix/UYU54GYOCURPAUYXH5V2U3EOM4DCX4VZPT3YOMN43H555KU2.jpg"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ require 'helper'
2
+
3
+ class TestSpecials < Test::Unit::TestCase
4
+
5
+ context "When using the foursquare API and working with specials" do
6
+ setup do
7
+ @client = foursquare_test_client
8
+ end
9
+
10
+ should "fetch info for a single special" do
11
+ stub_get("https://api.foursquare.com/v2/specials/4bd876f886ba62b58a6e88b3?oauth_token=#{@client.oauth_token}", "special.json")
12
+ special = @client.special('4bd876f886ba62b58a6e88b3')
13
+ special.message.should == "$10 off for the mayor!"
14
+ end
15
+
16
+ should "fetch results when searching for nearby specials" do
17
+ stub_get("https://api.foursquare.com/v2/specials/search?ll=40.7%2C-73.9&oauth_token=#{@client.oauth_token}", "search_specials.json")
18
+ specials = @client.search_specials(:ll => '40.7,-73.9')
19
+ specials.count.should == 1
20
+ specials.first.message.should == "Buy 1 Get 1 40% Off All Video Games (priced up to $19.99)\r\n\r\nItems must be of equal or lesser value to the lowest priced item purchased\r\n\r\nEnds 2/12/2011"
21
+ end
22
+ end
23
+ end
data/test/test_tips.rb ADDED
@@ -0,0 +1,26 @@
1
+ require 'helper'
2
+
3
+ class TestTips < Test::Unit::TestCase
4
+
5
+ context "When using the foursquare API and working with tips" do
6
+ setup do
7
+ @client = foursquare_test_client
8
+ end
9
+
10
+ should "fetch info for a single tip" do
11
+ stub_get("https://api.foursquare.com/v2/tips/4b5e662a70c603bba7d790b4?oauth_token=#{@client.oauth_token}", "tip.json")
12
+ tip = @client.tip('4b5e662a70c603bba7d790b4')
13
+ tip.done.groups.first['count'].should == 0
14
+ tip.done.groups.last['count'].should == 6
15
+ tip.done.groups.last.items.first.firstName.should == 'Allison'
16
+ tip.venue.name.should == '2 Bros Pizza'
17
+ end
18
+
19
+ should "fetch results when searching for nearby tips" do
20
+ stub_get("https://api.foursquare.com/v2/tips/search?ll=40.7%2C-73.9&oauth_token=#{@client.oauth_token}&limit=3", "search_tips.json")
21
+ tips = @client.search_tips(:ll => '40.7,-73.9', :limit => 3)
22
+ tips.count.should == 3
23
+ tips.first.text.should == "If you want a soda go to the vending machine next to the ice Cream place near the music barge it's only $2 for a 20oz bottle instead of $2 for a can at one of the carts."
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,24 @@
1
+ require 'helper'
2
+
3
+ class TestUsers < Test::Unit::TestCase
4
+
5
+ context "When using the foursquare API and working with users" do
6
+ setup do
7
+ @client = foursquare_test_client
8
+ end
9
+
10
+ should "fetch info for a single user" do
11
+ stub_get("https://api.foursquare.com/v2/users/self?oauth_token=#{@client.oauth_token}", "user.json")
12
+ user = @client.user('self')
13
+ user.firstName.should == 'Matt'
14
+ user.checkins['count'].should == 669
15
+ end
16
+
17
+ should "fetch results when searching for users" do
18
+ stub_get("https://api.foursquare.com/v2/users/search?oauth_token=#{@client.oauth_token}&twitter=matt_mueller", "search_users.json")
19
+ users = @client.search_users(:twitter => 'matt_mueller')
20
+ users.results.count.should == 1
21
+ users.results.first.lastName.should == 'Mueller'
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,25 @@
1
+ require 'helper'
2
+
3
+ class TestVenues < Test::Unit::TestCase
4
+
5
+ context "When using the foursquare API and working with venues" do
6
+ setup do
7
+ @client = foursquare_test_client
8
+ end
9
+
10
+ should "fetch info for a single venue" do
11
+ stub_get("https://api.foursquare.com/v2/venues/4b8c3d87f964a520f7c532e3?oauth_token=#{@client.oauth_token}", "venue.json")
12
+ venue = @client.venue('4b8c3d87f964a520f7c532e3')
13
+ venue.name.should == 'Bridgestone Arena'
14
+ venue.location.address.should == '501 Broadway'
15
+ end
16
+
17
+ should "search for venues based on passed criteria" do
18
+ stub_get("https://api.foursquare.com/v2/venues/search?ll=36.142064%2C-86.816086&oauth_token=#{@client.oauth_token}&query=coffee", "search_venues.json")
19
+ venues = @client.search_venues(:ll => '36.142064,-86.816086', :query => 'coffee')
20
+ venues.groups.first.items.count.should == 30
21
+ venues.groups.first.items.first.name.should == 'Ugly Mugs'
22
+ end
23
+ end
24
+
25
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foursquare2
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 59
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 8
8
+ - 9
9
9
  - 0
10
- version: 0.8.0
10
+ version: 0.9.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matt Mueller
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-12 00:00:00 -06:00
18
+ date: 2011-02-13 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -132,48 +132,61 @@ dependencies:
132
132
  requirements:
133
133
  - - ~>
134
134
  - !ruby/object:Gem::Version
135
- hash: 13
135
+ hash: 9
136
136
  segments:
137
- - 0
138
- - 5
137
+ - 1
139
138
  - 3
140
- version: 0.5.3
139
+ version: "1.3"
141
140
  requirement: *id008
142
141
  prerelease: false
143
- type: :runtime
144
- name: faraday
142
+ type: :development
143
+ name: fakeweb
145
144
  - !ruby/object:Gem::Dependency
146
145
  version_requirements: &id009 !ruby/object:Gem::Requirement
147
146
  none: false
148
147
  requirements:
149
148
  - - ~>
150
149
  - !ruby/object:Gem::Version
151
- hash: 19
150
+ hash: 3
152
151
  segments:
153
152
  - 0
154
- - 3
155
- - 0
156
- version: 0.3.0
153
+ - 4
154
+ version: "0.4"
157
155
  requirement: *id009
158
156
  prerelease: false
159
- type: :runtime
160
- name: faraday_middleware
157
+ type: :development
158
+ name: jnunemaker-matchy
161
159
  - !ruby/object:Gem::Dependency
162
160
  version_requirements: &id010 !ruby/object:Gem::Requirement
163
161
  none: false
164
162
  requirements:
165
163
  - - ~>
166
164
  - !ruby/object:Gem::Version
167
- hash: 23
165
+ hash: 7
168
166
  segments:
169
167
  - 1
168
+ - 4
169
+ version: "1.4"
170
+ requirement: *id010
171
+ prerelease: false
172
+ type: :development
173
+ name: json_pure
174
+ - !ruby/object:Gem::Dependency
175
+ version_requirements: &id011 !ruby/object:Gem::Requirement
176
+ none: false
177
+ requirements:
178
+ - - ~>
179
+ - !ruby/object:Gem::Version
180
+ hash: 21
181
+ segments:
170
182
  - 0
171
183
  - 0
172
- version: 1.0.0
173
- requirement: *id010
184
+ - 5
185
+ version: 0.0.5
186
+ requirement: *id011
174
187
  prerelease: false
175
- type: :runtime
176
- name: hashie
188
+ type: :development
189
+ name: multi_json
177
190
  description: Gives access to all endpoints in version 2 of foursquare's API with syntax that will be familiar to those who used the original foursquare gem by Jeremy Welch.
178
191
  email: muellermr@gmail.com
179
192
  executables: []
@@ -200,8 +213,25 @@ files:
200
213
  - lib/foursquare2/tips.rb
201
214
  - lib/foursquare2/users.rb
202
215
  - lib/foursquare2/venues.rb
216
+ - test/fixtures/checkin.json
217
+ - test/fixtures/friend_checkins.json
218
+ - test/fixtures/photo.json
219
+ - test/fixtures/search_specials.json
220
+ - test/fixtures/search_tips.json
221
+ - test/fixtures/search_users.json
222
+ - test/fixtures/search_venues.json
223
+ - test/fixtures/special.json
224
+ - test/fixtures/tip.json
225
+ - test/fixtures/user.json
226
+ - test/fixtures/venue.json
203
227
  - test/helper.rb
204
- - test/test_foursquare2.rb
228
+ - test/test_checkins.rb
229
+ - test/test_client.rb
230
+ - test/test_photos.rb
231
+ - test/test_specials.rb
232
+ - test/test_tips.rb
233
+ - test/test_users.rb
234
+ - test/test_venues.rb
205
235
  has_rdoc: true
206
236
  homepage: http://github.com/mattmueller/foursquare2
207
237
  licenses:
@@ -238,4 +268,10 @@ specification_version: 3
238
268
  summary: Foursquare API v2 gem in the spirit of the original foursquare gem
239
269
  test_files:
240
270
  - test/helper.rb
241
- - test/test_foursquare2.rb
271
+ - test/test_checkins.rb
272
+ - test/test_client.rb
273
+ - test/test_photos.rb
274
+ - test/test_specials.rb
275
+ - test/test_tips.rb
276
+ - test/test_users.rb
277
+ - test/test_venues.rb
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestFoursquare2 < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end