Skip to content

Commit

Permalink
Add top_in(leaderboard_name, number) method as a shorthan of `membe…
Browse files Browse the repository at this point in the history
…rs_from_rank_range_in(leaderboard_name, 1, number)`
  • Loading branch information
robertomiranda committed Nov 20, 2014
1 parent 689a887 commit cab8bff
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
12 changes: 12 additions & 0 deletions lib/leaderboard.rb
Original file line number Diff line number Diff line change
Expand Up @@ -822,6 +822,18 @@ def top(number,options = {})
members_from_rank_range(1, number, options)
end

# Retrieve members from the named leaderboard within a range from 1 to the number given.
#
# @param leaderboard_name [String] Name of the leaderboard.
# @param starting_rank [int] Starting rank (inclusive).
# @param ending_rank [int] Ending rank (inclusive).
# @param options [Hash] Options to be used when retrieving the data from the leaderboard.
#
# @return members from the leaderboard that fall within the given rank range.
def top_in(leaderboard_name, number, options={})
members_from_rank_range_in(leaderboard_name, 1, number, options)
end


# Retrieve a member at the specified index from the leaderboard.
#
Expand Down
19 changes: 19 additions & 0 deletions spec/leaderboard_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -646,6 +646,25 @@
expect(members[24][:member]).to eql('member_1')
end

it 'should allow you to retrieve a given set of members from the named leaderboard in a range from 1 to the number given' do
rank_members_in_leaderboard(25)

members = @leaderboard.top_in("name", 5)
expect(members.size).to be(5)
expect(members[0][:member]).to eql('member_25')
expect(members[0][:score].to_i).to be(25)
expect(members[4][:member]).to eql('member_21')

members = @leaderboard.top(1)
expect(members.size).to be(1)
expect(members[0][:member]).to eql('member_25')

members = @leaderboard.top(26)
expect(members.size).to be(25)
expect(members[0][:member]).to eql('member_25')
expect(members[0][:score].to_i).to be(25)
expect(members[24][:member]).to eql('member_1')
end

it 'should sort by rank if the :sort_by option is set to :rank' do
rank_members_in_leaderboard(25)
Expand Down

0 comments on commit cab8bff

Please sign in to comment.