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