checkdin 0.2.1 → 0.2.2

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/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = checkdin
2
2
 
3
- Description goes here.
3
+ Ruby gem for interacting with the checkd.in API.
4
4
 
5
5
  == Contributing to checkdin
6
6
 
@@ -25,5 +25,18 @@ module Checkdin
25
25
  return_error_or_body(response)
26
26
  end
27
27
 
28
+ # Add a vote for a single activity when voting is enabled for its promotion
29
+ #
30
+ # param [Integer] id The ID of the activity
31
+ # @param [Hash] options
32
+ # @option options Integer :user_id - The user that is performing this vote.
33
+
34
+ def add_vote_on_activity(id, options={})
35
+ response = connection.post do |req|
36
+ req.url "activities/#{id}/vote", options
37
+ end
38
+ return_error_or_body(response)
39
+ end
40
+
28
41
  end
29
42
  end
@@ -24,5 +24,19 @@ module Checkdin
24
24
  return_error_or_body(response)
25
25
  end
26
26
 
27
+ # Get a list of activities for a promotion ordered by the number of votes they have received
28
+ #
29
+ # param [Integer] id The ID ofthe promotion
30
+ # @param [Hash] options
31
+ # @option options Integer :limit - The maximum number of records to return.
32
+ # @option options Integer :page - The page of results to return.
33
+
34
+ def promotion_votes_leaderboard(id, options={})
35
+ response = connection.get do |req|
36
+ req.url "promotions/#{id}/votes_leaderboard", options
37
+ end
38
+ return_error_or_body(response)
39
+ end
40
+
27
41
  end
28
42
  end
@@ -1,3 +1,3 @@
1
1
  module Checkdin
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  end
@@ -43,4 +43,30 @@ describe Checkdin::Activities do
43
43
  end
44
44
 
45
45
  end
46
+
47
+ context "voting for an activity" do
48
+ use_vcr_cassette
49
+ let(:result) { @client.add_vote_on_activity(18881) }
50
+
51
+ it "should make the activity's information available" do
52
+ result.activity.type.should == "twitter_status"
53
+ end
54
+
55
+ it "should register the vote" do
56
+ result.activity.vote_count.should == 6
57
+ end
58
+
59
+ context "passing an email" do
60
+ use_vcr_cassette
61
+ let(:result) { @client.add_vote_on_activity(18881, :user_id => 36)}
62
+
63
+ it "should register the vote as normal" do
64
+ result.activity.type.should == "twitter_status"
65
+ end
66
+
67
+ it "should up the vote count as normal" do
68
+ result.activity.vote_count.should == 7
69
+ end
70
+ end
71
+ end
46
72
  end
@@ -32,4 +32,32 @@ describe Checkdin::Promotions do
32
32
  result.count.should == 2
33
33
  end
34
34
  end
35
+
36
+ context "viewing the votes leaderboard for a promotion" do
37
+ use_vcr_cassette
38
+ let(:result) { @client.promotion_votes_leaderboard(54, :limit => limit) }
39
+ let(:limit) { nil }
40
+
41
+ it "should return promotion information" do
42
+ result.promotion.title.should == "A voting promotion!"
43
+ end
44
+
45
+ it "should return a list of activities ordered by vote count" do
46
+ result.promotion.votes_leaderboard.activities.first.activity.vote_count.should == 7
47
+ result.promotion.votes_leaderboard.activities.last.activity.vote_count.should == 0
48
+ end
49
+
50
+ it "should return all activities" do
51
+ result.promotion.votes_leaderboard.activities.count.should == 3
52
+ end
53
+
54
+ context "limiting the number of records returned" do
55
+ use_vcr_cassette
56
+ let(:limit) { 1 }
57
+
58
+ it "should only return limit number of records" do
59
+ result.promotion.votes_leaderboard.activities.count.should == 1
60
+ end
61
+ end
62
+ end
35
63
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: checkdin
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.1
5
+ version: 0.2.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Matt Mueller