Skip to content

Commit

Permalink
specs for mongoid scopes
Browse files Browse the repository at this point in the history
  • Loading branch information
amatsuda committed Feb 18, 2011
1 parent 3c567d2 commit 5f3f73f
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 0 deletions.
52 changes: 52 additions & 0 deletions spec/models/mongoid_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
require File.expand_path('../spec_helper', File.dirname(__FILE__))
require 'mongoid'
require File.expand_path('../../lib/kaminari/mongoid_extension', File.dirname(__FILE__))

describe Kaminari::MongoidExtension do
before :all do
class Developer
include ::Mongoid::Document
end
end
before do
stub(subject).count { 300 } # in order to avoid DB access...
end

describe '#page' do
context 'page 1' do
subject { Developer.page 1 }
it { should be_a Mongoid::Criteria }
its(:current_page) { should == 1 }
its(:limit_value) { should == 25 }
its(:num_pages) { should == 12 }
it { should skip(0) }
end

context 'page 2' do
subject { Developer.page 2 }
it { should be_a Mongoid::Criteria }
its(:current_page) { should == 2 }
its(:limit_value) { should == 25 }
its(:num_pages) { should == 12 }
it { should skip 25 }
end

context 'page "foobar"' do
subject { Developer.page 'foobar' }
it { should be_a Mongoid::Criteria }
its(:current_page) { should == 1 }
its(:limit_value) { should == 25 }
its(:num_pages) { should == 12 }
it { should skip 0 }
end
end

describe '#per' do
subject { Developer.page(2).per(10) }
it { should be_a Mongoid::Criteria }
its(:current_page) { should == 2 }
its(:limit_value) { should == 10 }
its(:num_pages) { should == 30 }
it { should skip 10 }
end
end
1 change: 1 addition & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'rails'
require 'mongoid'
require 'kaminari'

require File.join(File.dirname(__FILE__), 'fake_app')
Expand Down
6 changes: 6 additions & 0 deletions spec/support/matchers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,9 @@ def instance_of(klass)
"expected #{count || 'any'} instance(s) of #{@klass.name} but was #{@count}"
end
end

RSpec::Matchers.define :skip do |num|
match do |criteria|
criteria.instance_variable_get('@options')[:skip] == num
end
end

0 comments on commit 5f3f73f

Please sign in to comment.