annotate vendor/plugins/classic_pagination/test/pagination_test.rb @ 8:0c83d98252d9 yuya

* Add custom repo prefix and proper auth realm, remove auth cache (seems like an unwise feature), pass DB handle around, various other bits of tidying
author Chris Cannam
date Thu, 12 Aug 2010 15:31:37 +0100
parents 513646585e45
children
rev   line source
Chris@0 1 require File.dirname(__FILE__) + '/helper'
Chris@0 2 require File.dirname(__FILE__) + '/../init'
Chris@0 3
Chris@0 4 class PaginationTest < ActiveRecordTestCase
Chris@0 5 fixtures :topics, :replies, :developers, :projects, :developers_projects
Chris@0 6
Chris@0 7 class PaginationController < ActionController::Base
Chris@0 8 if respond_to? :view_paths=
Chris@0 9 self.view_paths = [ "#{File.dirname(__FILE__)}/../fixtures/" ]
Chris@0 10 else
Chris@0 11 self.template_root = [ "#{File.dirname(__FILE__)}/../fixtures/" ]
Chris@0 12 end
Chris@0 13
Chris@0 14 def simple_paginate
Chris@0 15 @topic_pages, @topics = paginate(:topics)
Chris@0 16 render :nothing => true
Chris@0 17 end
Chris@0 18
Chris@0 19 def paginate_with_per_page
Chris@0 20 @topic_pages, @topics = paginate(:topics, :per_page => 1)
Chris@0 21 render :nothing => true
Chris@0 22 end
Chris@0 23
Chris@0 24 def paginate_with_order
Chris@0 25 @topic_pages, @topics = paginate(:topics, :order => 'created_at asc')
Chris@0 26 render :nothing => true
Chris@0 27 end
Chris@0 28
Chris@0 29 def paginate_with_order_by
Chris@0 30 @topic_pages, @topics = paginate(:topics, :order_by => 'created_at asc')
Chris@0 31 render :nothing => true
Chris@0 32 end
Chris@0 33
Chris@0 34 def paginate_with_include_and_order
Chris@0 35 @topic_pages, @topics = paginate(:topics, :include => :replies, :order => 'replies.created_at asc, topics.created_at asc')
Chris@0 36 render :nothing => true
Chris@0 37 end
Chris@0 38
Chris@0 39 def paginate_with_conditions
Chris@0 40 @topic_pages, @topics = paginate(:topics, :conditions => ["created_at > ?", 30.minutes.ago])
Chris@0 41 render :nothing => true
Chris@0 42 end
Chris@0 43
Chris@0 44 def paginate_with_class_name
Chris@0 45 @developer_pages, @developers = paginate(:developers, :class_name => "DeVeLoPeR")
Chris@0 46 render :nothing => true
Chris@0 47 end
Chris@0 48
Chris@0 49 def paginate_with_singular_name
Chris@0 50 @developer_pages, @developers = paginate()
Chris@0 51 render :nothing => true
Chris@0 52 end
Chris@0 53
Chris@0 54 def paginate_with_joins
Chris@0 55 @developer_pages, @developers = paginate(:developers,
Chris@0 56 :joins => 'LEFT JOIN developers_projects ON developers.id = developers_projects.developer_id',
Chris@0 57 :conditions => 'project_id=1')
Chris@0 58 render :nothing => true
Chris@0 59 end
Chris@0 60
Chris@0 61 def paginate_with_join
Chris@0 62 @developer_pages, @developers = paginate(:developers,
Chris@0 63 :join => 'LEFT JOIN developers_projects ON developers.id = developers_projects.developer_id',
Chris@0 64 :conditions => 'project_id=1')
Chris@0 65 render :nothing => true
Chris@0 66 end
Chris@0 67
Chris@0 68 def paginate_with_join_and_count
Chris@0 69 @developer_pages, @developers = paginate(:developers,
Chris@0 70 :join => 'd LEFT JOIN developers_projects ON d.id = developers_projects.developer_id',
Chris@0 71 :conditions => 'project_id=1',
Chris@0 72 :count => "d.id")
Chris@0 73 render :nothing => true
Chris@0 74 end
Chris@0 75
Chris@0 76 def paginate_with_join_and_group
Chris@0 77 @developer_pages, @developers = paginate(:developers,
Chris@0 78 :join => 'INNER JOIN developers_projects ON developers.id = developers_projects.developer_id',
Chris@0 79 :group => 'developers.id')
Chris@0 80 render :nothing => true
Chris@0 81 end
Chris@0 82
Chris@0 83 def rescue_errors(e) raise e end
Chris@0 84
Chris@0 85 def rescue_action(e) raise end
Chris@0 86
Chris@0 87 end
Chris@0 88
Chris@0 89 def setup
Chris@0 90 @controller = PaginationController.new
Chris@0 91 @request = ActionController::TestRequest.new
Chris@0 92 @response = ActionController::TestResponse.new
Chris@0 93 super
Chris@0 94 end
Chris@0 95
Chris@0 96 # Single Action Pagination Tests
Chris@0 97
Chris@0 98 def test_simple_paginate
Chris@0 99 get :simple_paginate
Chris@0 100 assert_equal 1, assigns(:topic_pages).page_count
Chris@0 101 assert_equal 3, assigns(:topics).size
Chris@0 102 end
Chris@0 103
Chris@0 104 def test_paginate_with_per_page
Chris@0 105 get :paginate_with_per_page
Chris@0 106 assert_equal 1, assigns(:topics).size
Chris@0 107 assert_equal 3, assigns(:topic_pages).page_count
Chris@0 108 end
Chris@0 109
Chris@0 110 def test_paginate_with_order
Chris@0 111 get :paginate_with_order
Chris@0 112 expected = [topics(:futurama),
Chris@0 113 topics(:harvey_birdman),
Chris@0 114 topics(:rails)]
Chris@0 115 assert_equal expected, assigns(:topics)
Chris@0 116 assert_equal 1, assigns(:topic_pages).page_count
Chris@0 117 end
Chris@0 118
Chris@0 119 def test_paginate_with_order_by
Chris@0 120 get :paginate_with_order
Chris@0 121 expected = assigns(:topics)
Chris@0 122 get :paginate_with_order_by
Chris@0 123 assert_equal expected, assigns(:topics)
Chris@0 124 assert_equal 1, assigns(:topic_pages).page_count
Chris@0 125 end
Chris@0 126
Chris@0 127 def test_paginate_with_conditions
Chris@0 128 get :paginate_with_conditions
Chris@0 129 expected = [topics(:rails)]
Chris@0 130 assert_equal expected, assigns(:topics)
Chris@0 131 assert_equal 1, assigns(:topic_pages).page_count
Chris@0 132 end
Chris@0 133
Chris@0 134 def test_paginate_with_class_name
Chris@0 135 get :paginate_with_class_name
Chris@0 136
Chris@0 137 assert assigns(:developers).size > 0
Chris@0 138 assert_equal DeVeLoPeR, assigns(:developers).first.class
Chris@0 139 end
Chris@0 140
Chris@0 141 def test_paginate_with_joins
Chris@0 142 get :paginate_with_joins
Chris@0 143 assert_equal 2, assigns(:developers).size
Chris@0 144 developer_names = assigns(:developers).map { |d| d.name }
Chris@0 145 assert developer_names.include?('David')
Chris@0 146 assert developer_names.include?('Jamis')
Chris@0 147 end
Chris@0 148
Chris@0 149 def test_paginate_with_join_and_conditions
Chris@0 150 get :paginate_with_joins
Chris@0 151 expected = assigns(:developers)
Chris@0 152 get :paginate_with_join
Chris@0 153 assert_equal expected, assigns(:developers)
Chris@0 154 end
Chris@0 155
Chris@0 156 def test_paginate_with_join_and_count
Chris@0 157 get :paginate_with_joins
Chris@0 158 expected = assigns(:developers)
Chris@0 159 get :paginate_with_join_and_count
Chris@0 160 assert_equal expected, assigns(:developers)
Chris@0 161 end
Chris@0 162
Chris@0 163 def test_paginate_with_include_and_order
Chris@0 164 get :paginate_with_include_and_order
Chris@0 165 expected = Topic.find(:all, :include => 'replies', :order => 'replies.created_at asc, topics.created_at asc', :limit => 10)
Chris@0 166 assert_equal expected, assigns(:topics)
Chris@0 167 end
Chris@0 168
Chris@0 169 def test_paginate_with_join_and_group
Chris@0 170 get :paginate_with_join_and_group
Chris@0 171 assert_equal 2, assigns(:developers).size
Chris@0 172 assert_equal 2, assigns(:developer_pages).item_count
Chris@0 173 developer_names = assigns(:developers).map { |d| d.name }
Chris@0 174 assert developer_names.include?('David')
Chris@0 175 assert developer_names.include?('Jamis')
Chris@0 176 end
Chris@0 177 end