Skip to content

Instantly share code, notes, and snippets.

@kannans
Created November 16, 2016 15:37
Show Gist options
  • Save kannans/53e0c7742ab02d6c2665c04a9d2b380d to your computer and use it in GitHub Desktop.
Save kannans/53e0c7742ab02d6c2665c04a9d2b380d to your computer and use it in GitHub Desktop.
pager
require "pager/version"
module Pager
class RandomRecord
@@count = 0
def initialize(records=[], random: true, options:{})
@records = random ? records.shuffle : records
@@count = 0
end
def next_item
if @@count != (records.size - 1)
records[@@count += 1]
end
end
def prev_item
if @@count != 0
records[@@count -= 1]
end
end
def first_item
records[0]
end
def last_item
records[records.size - 1]
end
private
attr_accessor :records, :count
end
end
require 'spec_helper'
describe Pager do
it 'has a version number' do
expect(Pager::VERSION).not_to be nil
end
it 'does first useful' do
recs = [1,3,5]
rpage = Pager::RandomRecord.new(recs, random: false)
expect(rpage.first_item).to eq(1)
end
it 'does last useful' do
recs = [1,3,5]
rpage = Pager::RandomRecord.new(recs, random: false)
expect(rpage.last_item).to eq(5)
end
it 'does next useful' do
recs = [1,3,5]
rpage = Pager::RandomRecord.new(recs, random: false)
expect(rpage.next_item).to eq(3)
end
it 'does prev useful' do
recs = [1,3,5]
rpage = Pager::RandomRecord.new(recs, random: false)
expect(rpage.next_item).to eq(3)
expect(rpage.next_item).to eq(5)
expect(rpage.prev_item).to eq(3)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment