public
Rubygem
Description: Most awesome pagination solution for Ruby
Homepage: http://github.com/mislav/will_paginate/wikis
Clone URL: git://github.com/mislav/will_paginate.git
extract reusable pagination testing stuff into WillPaginate::ViewTestCase
mislav (author)
Thu Apr 24 05:12:24 -0700 2008
commit  96166037a72a0c35fc6129f075c0c49c9fc21772
tree    80251e74f7de85ea4c51fc98a90623b9eb01a1e2
parent  db933564073f5ab3a759c29e8a227476a79af1d5
...
12
13
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
16
17
...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
0
@@ -12,6 +12,89 @@ end
0
 
0
 ActionController::Base.perform_caching = false
0
 
0
+class WillPaginate::ViewTestCase < Test::Unit::TestCase
0
+ def setup
0
+ super
0
+ @controller = DummyController.new
0
+ @request = @controller.request
0
+ @html_result = nil
0
+ @template = '<%= will_paginate collection, options %>'
0
+
0
+ @view = ActionView::Base.new
0
+ @view.assigns['controller'] = @controller
0
+ @view.assigns['_request'] = @request
0
+ @view.assigns['_params'] = @request.params
0
+ end
0
+
0
+ def test_no_complain; end
0
+
0
+ protected
0
+
0
+ def paginate(collection = {}, options = {}, &block)
0
+ if collection.instance_of? Hash
0
+ page_options = { :page => 1, :total_entries => 11, :per_page => 4 }.merge(collection)
0
+ collection = [1].paginate(page_options)
0
+ end
0
+
0
+ locals = { :collection => collection, :options => options }
0
+
0
+ if defined? ActionView::Template
0
+ # Rails 2.1
0
+ args = [ ActionView::Template.new(@view, @template, false, locals, true, nil) ]
0
+ else
0
+ # older Rails versions
0
+ args = [nil, @template, nil, locals]
0
+ end
0
+
0
+ @html_result = @view.render_template(*args)
0
+ @html_document = HTML::Document.new(@html_result, true, false)
0
+
0
+ if block_given?
0
+ classname = options[:class] || WillPaginate::ViewHelpers.pagination_options[:class]
0
+ assert_select("div.#{classname}", 1, 'no main DIV', &block)
0
+ end
0
+ end
0
+
0
+ def response_from_page_or_rjs
0
+ @html_document.root
0
+ end
0
+
0
+ def validate_page_numbers expected, links, param_name = :page
0
+ param_pattern = /\W#{CGI.escape(param_name.to_s)}=([^&]*)/
0
+
0
+ assert_equal(expected, links.map { |e|
0
+ e['href'] =~ param_pattern
0
+ $1 ? $1.to_i : $1
0
+ })
0
+ end
0
+
0
+ def assert_links_match pattern, links = nil, numbers = nil
0
+ links ||= assert_select 'div.pagination a[href]' do |elements|
0
+ elements
0
+ end
0
+
0
+ pages = [] if numbers
0
+
0
+ links.each do |el|
0
+ assert_match pattern, el['href']
0
+ if numbers
0
+ el['href'] =~ pattern
0
+ pages << $1.to_i
0
+ end
0
+ end
0
+
0
+ assert_equal numbers, pages, "page numbers don't match" if numbers
0
+ end
0
+
0
+ def assert_no_links_match pattern
0
+ assert_select 'div.pagination a[href]' do |elements|
0
+ elements.each do |el|
0
+ assert_no_match pattern, el['href']
0
+ end
0
+ end
0
+ end
0
+end
0
+
0
 class DummyRequest
0
   attr_accessor :symbolized_path_parameters
0
   
...
1
2
3
4
5
 
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
...
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
...
1
 
2
3
 
4
5
 
 
 
 
 
 
 
 
 
 
 
 
 
6
7
8
...
275
276
277
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
0
@@ -1,22 +1,8 @@
0
 require 'helper'
0
-require 'action_controller'
0
 require 'lib/view_test_process'
0
 
0
-class ViewTest < Test::Unit::TestCase
0
+class ViewTest < WillPaginate::ViewTestCase
0
   
0
- def setup
0
- super
0
- @controller = DummyController.new
0
- @request = @controller.request
0
- @html_result = nil
0
- @template = '<%= will_paginate collection, options %>'
0
-
0
- @view = ActionView::Base.new
0
- @view.assigns['controller'] = @controller
0
- @view.assigns['_request'] = @request
0
- @view.assigns['_params'] = @request.params
0
- end
0
-
0
   ## basic pagination ##
0
 
0
   def test_will_paginate
0
@@ -289,70 +275,4 @@ class ViewTest < Test::Unit::TestCase
0
     end
0
   end
0
   
0
-
0
- protected
0
-
0
- def paginate(collection = {}, options = {}, &block)
0
- if collection.instance_of? Hash
0
- page_options = { :page => 1, :total_entries => 11, :per_page => 4 }.merge(collection)
0
- collection = [1].paginate(page_options)
0
- end
0
-
0
- locals = { :collection => collection, :options => options }
0
-
0
- if defined? ActionView::Template
0
- # Rails 2.1
0
- args = [ ActionView::Template.new(@view, @template, false, locals, true, nil) ]
0
- else
0
- # older Rails versions
0
- args = [nil, @template, nil, locals]
0
- end
0
-
0
- @html_result = @view.render_template(*args)
0
- @html_document = HTML::Document.new(@html_result, true, false)
0
-
0
- if block_given?
0
- classname = options[:class] || WillPaginate::ViewHelpers.pagination_options[:class]
0
- assert_select("div.#{classname}", 1, 'no main DIV', &block)
0
- end
0
- end
0
-
0
- def response_from_page_or_rjs
0
- @html_document.root
0
- end
0
-
0
- def validate_page_numbers expected, links, param_name = :page
0
- param_pattern = /\W#{CGI.escape(param_name.to_s)}=([^&]*)/
0
-
0
- assert_equal(expected, links.map { |e|
0
- e['href'] =~ param_pattern
0
- $1 ? $1.to_i : $1
0
- })
0
- end
0
-
0
- def assert_links_match pattern, links = nil, numbers = nil
0
- links ||= assert_select 'div.pagination a[href]' do |elements|
0
- elements
0
- end
0
-
0
- pages = [] if numbers
0
-
0
- links.each do |el|
0
- assert_match pattern, el['href']
0
- if numbers
0
- el['href'] =~ pattern
0
- pages << $1.to_i
0
- end
0
- end
0
-
0
- assert_equal numbers, pages, "page numbers don't match" if numbers
0
- end
0
-
0
- def assert_no_links_match pattern
0
- assert_select 'div.pagination a[href]' do |elements|
0
- elements.each do |el|
0
- assert_no_match pattern, el['href']
0
- end
0
- end
0
- end
0
 end

Comments

    No one has commented yet.