annotate lib/plugins/classic_pagination/test/pagination_test.rb @ 1327:287f201c2802 redmine-2.2-integration

Add italic
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Wed, 19 Jun 2013 20:56:22 +0100
parents 433d4f72a19b
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