foursquare2 0.8.0 → 0.9.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.
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