0
@@ -181,7 +181,7 @@ describe WillPaginate::Finders::ActiveRecord do
0
result.current_page.should == 1
0
result.total_pages.should == 1
0
result.size.should == 4
0
+ }.should run_queries
(1)0
it "should get second (inexistent) page of Topics, requiring 2 queries" do
0
@@ -309,18 +309,122 @@ describe WillPaginate::Finders::ActiveRecord do
0
it "should paginate through association extension" do
0
project = Project.find(:first)
0
+ expected = [replies(:brave)]
0
result = project.replies.paginate_recent :page => 1
0
- result.should == [replies(:brave)]
0
+ result.should == expected
0
+ }.should run_queries(1)
0
+ it "should paginate with joins" do
0
+ join_sql = 'LEFT JOIN developers_projects ON users.id = developers_projects.developer_id'
0
+ result = Developer.paginate :page => 1, :joins => join_sql, :conditions => 'project_id = 1'
0
+ result.size.should == 2
0
+ developer_names = result.map(&:name)
0
+ developer_names.should include('David')
0
+ developer_names.should include('Jamis')
0
+ }.should run_queries(1)
0
+ expected = result.to_a
0
+ result = Developer.paginate :page => 1, :joins => join_sql,
0
+ :conditions => 'project_id = 1', :count => { :select => "users.id" }
0
+ result.should == expected
0
+ result.total_entries.should == 2
0
+ }.should run_queries(1)
0
+ it "should paginate with group" do
0
+ result = Developer.paginate :page => 1, :per_page => 10,
0
+ :group => 'salary', :select => 'salary', :order => 'salary'
0
+ }.should run_queries(1)
0
+ expected = users(:david, :jamis, :dev_10, :poor_jamis).map(&:salary).sort
0
+ result.map(&:salary).should == expected
0
+ it "should paginate with dynamic finder" do
0
+ expected = replies(:witty_retort, :spam)
0
+ Reply.paginate_by_topic_id(1, :page => 1).should == expected
0
+ result = Developer.paginate :conditions => { :salary => 100000 }, :page => 1, :per_page => 5
0
+ result.total_entries.should == 8
0
+ Developer.paginate_by_salary(100000, :page => 1, :per_page => 5).should == result
0
+ it "should paginate with dynamic finder and conditions" do
0
+ result = Developer.paginate_by_salary(100000, :page => 1, :conditions => ['id > ?', 6])
0
+ result.total_entries.should == 4
0
+ result.map(&:id).should == (7..10).to_a
0
+ it "should raise error when dynamic finder is not recognized" do
0
+ Developer.paginate_by_inexistent_attribute 100000, :page => 1
0
+ }.should raise_error(NoMethodError)
0
+ it "should paginate with_scope" do
0
+ result = Developer.with_poor_ones { Developer.paginate :page => 1 }
0
+ result.size.should == 2
0
+ result.total_entries.should == 2
0
+ describe "named_scope" do
0
+ it "should paginate" do
0
+ result = Developer.poor.paginate :page => 1, :per_page => 1
0
+ result.size.should == 1
0
+ result.total_entries.should == 2
0
+ it "should paginate on habtm association" do
0
+ project = projects(:active_record)
0
+ result = project.developers.poor.paginate :page => 1, :per_page => 1
0
+ result.size.should == 1
0
+ result.total_entries.should == 1
0
+ }.should run_queries(2)
0
+ it "should paginate on hmt association" do
0
+ project = projects(:active_record)
0
+ expected = [replies(:brave)]
0
+ result = project.replies.recent.paginate :page => 1, :per_page => 1
0
+ result.should == expected
0
+ result.total_entries.should == 1
0
+ }.should run_queries(2)
0
+ it "should paginate on has_many association" do
0
+ project = projects(:active_record)
0
+ expected = [topics(:ar)]
0
+ result = project.topics.mentions_activerecord.paginate :page => 1, :per_page => 1
0
+ result.should == expected
0
+ result.total_entries.should == 1
0
}.should run_queries(2)
0
+ it "should paginate with :readonly option" do
0
+ lambda { Developer.paginate :readonly => true, :page => 1 }.should_not raise_error
0
- def run_queries(num
= 1)
0
QueryCountMatcher.new(num)
Comments
No one has commented yet.