godfat-pagify 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. data/CHANGES +11 -0
  2. data/README +36 -22
  3. data/Rakefile +28 -36
  4. data/TODO +9 -1
  5. data/lib/pagify.rb +7 -2
  6. data/lib/pagify/active_record.rb +3 -5
  7. data/lib/pagify/array.rb +2 -2
  8. data/lib/pagify/data_mapper.rb +3 -11
  9. data/lib/pagify/{helpers → helper}/abstract.rb +39 -19
  10. data/lib/pagify/{helpers/details → helper/detail}/setting.rb +5 -5
  11. data/lib/pagify/{helpers/details → helper/detail}/setup.rb +1 -1
  12. data/lib/pagify/{helpers → helper}/html.rb +10 -9
  13. data/lib/pagify/helper/rails.rb +23 -0
  14. data/lib/pagify/{pages → page}/basic.rb +2 -4
  15. data/lib/pagify/{pages → page}/null.rb +2 -3
  16. data/lib/pagify/{pagers → pager}/active_record.rb +2 -4
  17. data/lib/pagify/{pagers → pager}/array.rb +2 -3
  18. data/lib/pagify/{pagers → pager}/basic.rb +2 -2
  19. data/lib/pagify/{pagers → pager}/data_mapper.rb +2 -3
  20. data/lib/pagify/{pagers/details → pager/detail}/page_accept_string_or_blank.rb +2 -3
  21. data/lib/pagify/{pagers → pager}/null.rb +1 -3
  22. data/lib/pagify/pagifier/abstract.rb +10 -0
  23. data/lib/pagify/{pagifiers → pagifier}/active_record.rb +1 -1
  24. data/lib/pagify/{pagifiers → pagifier}/array.rb +1 -1
  25. data/lib/pagify/{pagifiers → pagifier}/data_mapper.rb +2 -2
  26. data/lib/pagify/version.rb +1 -1
  27. data/pagify.gemspec +19 -27
  28. data/test/helper.rb +14 -2
  29. data/test/{suite_for_model.rb → helper_model.rb} +1 -43
  30. data/test/{test_pagify.rb → helper_pagify.rb} +1 -3
  31. data/test/test_active_record.rb +9 -14
  32. data/test/test_array.rb +1 -1
  33. data/test/test_basic.rb +1 -1
  34. data/test/test_data_mapper.rb +3 -2
  35. data/test/test_html.rb +33 -7
  36. data/test/test_null.rb +19 -10
  37. data/test/test_rails.rb +32 -0
  38. metadata +39 -66
  39. data/lib/pagify/basic.rb +0 -3
  40. data/lib/pagify/null.rb +0 -5
  41. data/lib/pagify/pagifiers/abstract.rb +0 -34
@@ -0,0 +1,23 @@
1
+
2
+ require 'pagify/helper/html'
3
+
4
+ module Pagify::Helper::Rails
5
+ def default_attributes
6
+ super.merge(:query_name => :page, :wrapper_class => 'pagination')
7
+ end
8
+ end
9
+
10
+ class Pagify::Helper::HTML
11
+ extend Pagify::Helper::Rails
12
+ end
13
+
14
+ module ApplicationHelper
15
+ def would_paginate objs, &path
16
+ path = lambda{ request.path } unless block_given?
17
+ html = objs.pager.html
18
+ name = html.setting[:query_name]
19
+ "<div class=\"#{html.setting[:wrapper_class]}\">" +
20
+ html.links_full(params[name]){ |p| path.call + "?#{name}=#{p}" } +
21
+ '</div>'
22
+ end
23
+ end
@@ -1,6 +1,4 @@
1
1
 
2
- require 'rubygems'
3
-
4
2
  module Pagify
5
3
  # which was produced by Paginator#page / Paginator#[],
6
4
  # representing page that contained target data.
@@ -54,5 +52,5 @@ module Pagify
54
52
  end
55
53
  end
56
54
 
57
- end
58
- end
55
+ end # of BasicPage
56
+ end # of Pagify
@@ -1,11 +1,10 @@
1
1
 
2
2
  module Pagify
3
-
4
3
  # a null page that stubs anything to 0 or [], etc.
5
4
  class NullPage < BasicPage
6
5
  def initialize pager = NullPager.instance, page = 0
7
6
  super(pager, page)
7
+ @data = []
8
8
  end
9
9
  end
10
-
11
- end # of Pagify
10
+ end
@@ -26,7 +26,5 @@ module Pagify
26
26
  model.count(query_opts)
27
27
  }))
28
28
  end
29
-
30
- end
31
-
32
- end
29
+ end # of ActiveRecordPager
30
+ end # of Pagify
@@ -17,6 +17,5 @@ module Pagify
17
17
  data.size
18
18
  }))
19
19
  end
20
-
21
- end
22
- end
20
+ end # of ArrayPager
21
+ end # of Pagify
@@ -110,5 +110,5 @@ module Pagify
110
110
  @null_page_instance ||= NullPage.new(self)
111
111
  end
112
112
 
113
- end
114
- end
113
+ end # of BasicPager
114
+ end # of Pagify
@@ -25,6 +25,5 @@ module Pagify
25
25
  }))
26
26
  end
27
27
 
28
- end
29
-
30
- end
28
+ end # of DataMapperPager
29
+ end # of Pagify
@@ -9,6 +9,5 @@ module Pagify
9
9
  n = n.to_i
10
10
  end
11
11
  end
12
- end
13
-
14
- end
12
+ end # of PageAcceptStringOrBlank
13
+ end # of Pagify
@@ -1,6 +1,5 @@
1
1
 
2
2
  module Pagify
3
-
4
3
  # a null paginator that stubs any page into a null page.
5
4
  class NullPager < BasicPager
6
5
  include Singleton
@@ -12,6 +11,5 @@ module Pagify
12
11
  def normalize_page n
13
12
  0
14
13
  end
15
- end
16
-
14
+ end # of NullPager
17
15
  end # of Pagify
@@ -0,0 +1,10 @@
1
+
2
+ module Pagify
3
+ module Pagifier
4
+ def pagify opts = {}
5
+ opts = {:per_page => 20, :null_page => false, :page => 1}.merge(opts)
6
+ page = opts.delete(:page)
7
+ pagify_pager_create(self, opts).page(page)
8
+ end
9
+ end # of Pagifier
10
+ end # of Pagify
@@ -1,5 +1,5 @@
1
1
 
2
- require 'pagify/pagifiers/abstract'
2
+ require 'pagify/pagifier/abstract'
3
3
 
4
4
  [ActiveRecord::Base, ActiveRecord::Associations::AssociationCollection].each{ |klass|
5
5
  klass.module_eval do
@@ -1,5 +1,5 @@
1
1
 
2
- require 'pagify/pagifiers/abstract'
2
+ require 'pagify/pagifier/abstract'
3
3
 
4
4
  class Array
5
5
  include Pagify::Pagifier
@@ -1,11 +1,11 @@
1
1
 
2
- require 'pagify/pagifiers/abstract'
2
+ require 'pagify/pagifier/abstract'
3
3
 
4
4
  module DataMapper
5
5
  module Model
6
6
  include Pagify::Pagifier
7
7
  def pagify_pager_create model, opts
8
- Pagify::DataMapperPager.new model, opts, model.query
8
+ Pagify::DataMapperPager.new(model, opts, model.query)
9
9
  end
10
10
  end
11
11
  end
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Pagify
3
- VERSION = '0.5.0'
3
+ VERSION = '0.6.1'
4
4
  end
data/pagify.gemspec CHANGED
@@ -1,51 +1,43 @@
1
-
2
1
  # -*- encoding: utf-8 -*-
3
2
 
4
3
  Gem::Specification.new do |s|
5
4
  s.name = %q{pagify}
6
- s.version = "0.5.0"
5
+ s.version = "0.6.1"
7
6
 
8
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
- s.authors = ["Lin Jen-Shin (a.k.a. godfat \347\234\237\345\270\270)"]
10
- s.date = %q{2008-12-11}
11
- s.description = %q{pagination tools for plain Ruby, DataMapper, ActiveRecord, and other ORM.}
8
+ s.authors = ["Lin Jen-Shin (aka godfat \347\234\237\345\270\270)"]
9
+ s.date = %q{2009-07-30}
10
+ s.description = %q{ Pagination tools for Array(or custom class), DataMapper and ActiveRecord}
12
11
  s.email = %q{godfat (XD) godfat.org}
13
12
  s.extra_rdoc_files = ["CHANGES", "LICENSE", "NOTICE", "README", "TODO", "pagify.gemspec"]
14
- s.files = ["CHANGES", "LICENSE", "NOTICE", "README", "Rakefile", "TODO", "lib/pagify.rb", "lib/pagify/active_record.rb", "lib/pagify/array.rb", "lib/pagify/basic.rb", "lib/pagify/data_mapper.rb", "lib/pagify/helpers/abstract.rb", "lib/pagify/helpers/details/setting.rb", "lib/pagify/helpers/details/setup.rb", "lib/pagify/helpers/html.rb", "lib/pagify/null.rb", "lib/pagify/pagers/active_record.rb", "lib/pagify/pagers/array.rb", "lib/pagify/pagers/basic.rb", "lib/pagify/pagers/data_mapper.rb", "lib/pagify/pagers/details/page_accept_string_or_blank.rb", "lib/pagify/pagers/null.rb", "lib/pagify/pages/basic.rb", "lib/pagify/pages/null.rb", "lib/pagify/pagifiers/abstract.rb", "lib/pagify/pagifiers/active_record.rb", "lib/pagify/pagifiers/array.rb", "lib/pagify/pagifiers/data_mapper.rb", "lib/pagify/version.rb", "pagify.gemspec", "spec/pagify_spec.rb", "spec/spec_helper.rb", "tasks/ann.rake", "tasks/bones.rake", "tasks/gem.rake", "tasks/git.rake", "tasks/manifest.rake", "tasks/notes.rake", "tasks/post_load.rake", "tasks/rdoc.rake", "tasks/rubyforge.rake", "tasks/setup.rb", "tasks/spec.rake", "tasks/svn.rake", "tasks/test.rake", "test/helper.rb", "test/suite_for_model.rb", "test/test_active_record.rb", "test/test_array.rb", "test/test_basic.rb", "test/test_data_mapper.rb", "test/test_html.rb", "test/test_null.rb", "test/test_pagify.rb"]
15
- s.has_rdoc = true
13
+ s.files = ["CHANGES", "LICENSE", "NOTICE", "README", "Rakefile", "TODO", "lib/pagify.rb", "lib/pagify/active_record.rb", "lib/pagify/array.rb", "lib/pagify/data_mapper.rb", "lib/pagify/helper/abstract.rb", "lib/pagify/helper/detail/setting.rb", "lib/pagify/helper/detail/setup.rb", "lib/pagify/helper/html.rb", "lib/pagify/helper/rails.rb", "lib/pagify/page/basic.rb", "lib/pagify/page/null.rb", "lib/pagify/pager/active_record.rb", "lib/pagify/pager/array.rb", "lib/pagify/pager/basic.rb", "lib/pagify/pager/data_mapper.rb", "lib/pagify/pager/detail/page_accept_string_or_blank.rb", "lib/pagify/pager/null.rb", "lib/pagify/pagifier/abstract.rb", "lib/pagify/pagifier/active_record.rb", "lib/pagify/pagifier/array.rb", "lib/pagify/pagifier/data_mapper.rb", "lib/pagify/version.rb", "pagify.gemspec", "spec/pagify_spec.rb", "spec/spec_helper.rb", "test/helper.rb", "test/helper_model.rb", "test/helper_pagify.rb", "test/test_active_record.rb", "test/test_array.rb", "test/test_basic.rb", "test/test_data_mapper.rb", "test/test_html.rb", "test/test_null.rb", "test/test_rails.rb"]
16
14
  s.homepage = %q{http://github.com/godfat/pagify}
17
- s.rdoc_options = ["--diagram", "--charset=utf-8", "--inline-source", "--line-numbers", "--promiscuous", "--main", "README"]
15
+ s.rdoc_options = ["--charset=utf-8", "--inline-source", "--line-numbers", "--promiscuous", "--main", "README"]
18
16
  s.require_paths = ["lib"]
19
17
  s.rubyforge_project = %q{ludy}
20
- s.rubygems_version = %q{1.3.1}
21
- s.summary = %q{pagination tools for plain Ruby, DataMapper, ActiveRecord, and other ORM.}
22
- s.test_files = ["test/test_active_record.rb", "test/test_array.rb", "test/test_basic.rb", "test/test_data_mapper.rb", "test/test_html.rb", "test/test_null.rb", "test/test_pagify.rb"]
18
+ s.rubygems_version = %q{1.3.4}
19
+ s.summary = %q{Pagination tools for Array(or custom class), DataMapper and ActiveRecord}
20
+ s.test_files = ["test/test_active_record.rb", "test/test_array.rb", "test/test_basic.rb", "test/test_data_mapper.rb", "test/test_html.rb", "test/test_null.rb", "test/test_rails.rb"]
23
21
 
24
22
  if s.respond_to? :specification_version then
25
23
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
26
- s.specification_version = 2
24
+ s.specification_version = 3
27
25
 
28
26
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
29
- s.add_development_dependency(%q<bones>, [">= 2.1.0"])
30
- s.add_development_dependency(%q<extlib>, ["<= 0.9.8"])
31
- s.add_development_dependency(%q<dm-core>, ["<= 0.9.7"])
32
- s.add_development_dependency(%q<dm-aggregates>, ["<= 0.9.7"])
27
+ s.add_development_dependency(%q<bones>, [">= 2.5.1"])
28
+ s.add_development_dependency(%q<dm-core>, [">= 0.9.9"])
29
+ s.add_development_dependency(%q<dm-aggregates>, [">= 0.9.9"])
33
30
  s.add_development_dependency(%q<activerecord>, [">= 2.0.0"])
34
- s.add_development_dependency(%q<minitest>, [">= 1.3.0"])
35
31
  else
36
- s.add_dependency(%q<bones>, [">= 2.1.0"])
37
- s.add_dependency(%q<extlib>, ["<= 0.9.8"])
38
- s.add_dependency(%q<dm-core>, ["<= 0.9.7"])
39
- s.add_dependency(%q<dm-aggregates>, ["<= 0.9.7"])
32
+ s.add_dependency(%q<bones>, [">= 2.5.1"])
33
+ s.add_dependency(%q<dm-core>, [">= 0.9.9"])
34
+ s.add_dependency(%q<dm-aggregates>, [">= 0.9.9"])
40
35
  s.add_dependency(%q<activerecord>, [">= 2.0.0"])
41
- s.add_dependency(%q<minitest>, [">= 1.3.0"])
42
36
  end
43
37
  else
44
- s.add_dependency(%q<bones>, [">= 2.1.0"])
45
- s.add_dependency(%q<extlib>, ["<= 0.9.8"])
46
- s.add_dependency(%q<dm-core>, ["<= 0.9.7"])
47
- s.add_dependency(%q<dm-aggregates>, ["<= 0.9.7"])
38
+ s.add_dependency(%q<bones>, [">= 2.5.1"])
39
+ s.add_dependency(%q<dm-core>, [">= 0.9.9"])
40
+ s.add_dependency(%q<dm-aggregates>, [">= 0.9.9"])
48
41
  s.add_dependency(%q<activerecord>, [">= 2.0.0"])
49
- s.add_dependency(%q<minitest>, [">= 1.3.0"])
50
42
  end
51
43
  end
data/test/helper.rb CHANGED
@@ -1,9 +1,21 @@
1
1
 
2
2
  require 'rubygems'
3
- require 'minitest/unit'
4
- MiniTest::Unit.autorun
3
+
4
+ TestCase = begin
5
+ require 'minitest/unit'
6
+ MiniTest::Unit.autorun
7
+ MiniTest::Unit::TestCase
8
+ rescue LoadError
9
+ require 'test/unit'
10
+ Test::Unit::TestCase
11
+ end
5
12
 
6
13
  require 'pagify'
14
+ #gem 'dm-core', '<0.10'
15
+ #gem 'dm-aggregates', '<0.10'
16
+ require 'dm-core'
17
+ require 'dm-aggregates'
18
+ require 'active_record'
7
19
 
8
20
  if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('1.8.7')
9
21
  class Symbol
@@ -1,48 +1,6 @@
1
1
 
2
- # require 'extlib'
3
- require 'test/test_pagify'
4
-
5
2
  module SuiteForModel
6
3
 
7
- def test_cache_for_pager
8
- send(:User).pagify_cache = true
9
-
10
- users1 = send(:User).pagify :page => 1, :per_page => 2
11
- pager = send(:User).pagify_pager
12
-
13
- users2 = send(:User).pagify :page => 2, :per_page => 2
14
-
15
- # same pager
16
- assert_equal users1.pager.object_id, send(:User).pagify_pager.object_id
17
- assert_equal users2.pager.object_id, send(:User).pagify_pager.object_id
18
- assert_equal send(:User).pagify(:per_page => 1).pager.object_id, users1.pager.object_id
19
-
20
- # there's cache
21
- assert send(:User).pagify_pager != nil
22
-
23
- # cleanup cache
24
- send(:User).pagify_cache = false
25
- assert_nil send(:User).pagify_pager
26
- ensure
27
- # ensure we cleanup the cache.
28
- send(:User).pagify_cache = false
29
- end
30
-
31
- def test_no_cache_for_pager
32
- assert_nil send(:User).pagify_pager
33
-
34
- users1 = send(:User).pagify :page => 1, :per_page => 2
35
- pager = send(:User).pagify_pager
36
-
37
- users2 = send(:User).pagify :page => 2, :per_page => 2
38
-
39
- assert_nil send(:User).pagify_pager
40
-
41
- # not same pager for same opts
42
- assert users1.pager.object_id != send(:User).pagify_pager.object_id
43
- assert users2.pager.object_id != send(:User).pagify_pager.object_id
44
- end
45
-
46
4
  def test_page_correctness_fixnum
47
5
  page_correctness 1
48
6
  end
@@ -64,7 +22,7 @@ module SuiteForModel
64
22
  assert_equal 1, users.page
65
23
  assert_equal send(:User).first, users.first
66
24
  assert_equal 2, users.size
67
- assert_equal send(:User).first(:offset => 2), users.next.first
25
+ assert_equal send(:User).first(:offset => 2, :limit => 1), users.next.first
68
26
  assert_equal 1, users.next.size
69
27
  assert_equal Pagify::NullPage.new(users.pager), users.next.next
70
28
  end
@@ -1,7 +1,5 @@
1
1
 
2
- require 'test/helper'
3
-
4
- class TestPagify < MiniTest::Unit::TestCase
2
+ class TestPagify < TestCase
5
3
  def self.data; @data ||= (0..100).to_a; end
6
4
  def for_pager pager
7
5
  # assume data.size is 101, data is [0,1,2,3...]
@@ -1,12 +1,10 @@
1
1
 
2
2
  require 'test/helper'
3
- require 'test/suite_for_model'
3
+ require 'test/helper_pagify'
4
+ require 'test/helper_model'
4
5
 
5
6
  require 'pagify/active_record'
6
7
 
7
- gem 'dm-core', '<=0.9.7'
8
- require 'dm-core' # to help with active record to create database
9
-
10
8
  class TestActiveRecord < TestPagify
11
9
  def test_for_active_record
12
10
  for_pager Pagify::ActiveRecordPager.new(Topic)
@@ -23,30 +21,27 @@ class TestActiveRecord < TestPagify
23
21
  end
24
22
  end
25
23
 
26
- # i am tired with active record!!
27
- DataMapper.setup :active_record, 'sqlite3:tmp/active_record.sqlite3'
24
+ DataMapper.setup(:active_record, 'sqlite3:tmp/active_record.sqlite3')
25
+
28
26
  class UserForActiveRecord
29
27
  include DataMapper::Resource
30
- property :id, Serial
31
- property :name, String
32
28
  def self.default_repository_name
33
29
  :active_record
34
30
  end
35
- # why can't i use:
36
- storage_name = 'users'
37
- # end why
31
+ property :id, Serial
32
+ property :name, String
38
33
  storage_names[default_repository_name] = 'users'
39
34
  auto_migrate!
40
35
  end
41
36
 
42
37
  class PetForActiveRecord
43
38
  include DataMapper::Resource
44
- property :id, Serial
45
- property :name, String
46
- property :user_id, Integer
47
39
  def self.default_repository_name
48
40
  :active_record
49
41
  end
42
+ property :id, Serial
43
+ property :name, String
44
+ property :user_id, Integer, :nullable => true
50
45
  storage_names[default_repository_name] = 'pets'
51
46
  auto_migrate!
52
47
  end
data/test/test_array.rb CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  require 'test/helper'
3
- require 'test/test_pagify'
3
+ require 'test/helper_pagify'
4
4
 
5
5
  class TestArray < TestPagify
6
6
  def test_offset_bug
data/test/test_basic.rb CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  require 'test/helper'
3
- require 'test/test_pagify'
3
+ require 'test/helper_pagify'
4
4
 
5
5
  class TestBasic < TestPagify
6
6
  def test_basic
@@ -1,6 +1,7 @@
1
1
 
2
2
  require 'test/helper'
3
- require 'test/suite_for_model'
3
+ require 'test/helper_pagify'
4
+ require 'test/helper_model'
4
5
 
5
6
  require 'pagify/data_mapper'
6
7
 
@@ -40,7 +41,7 @@ class TestDataMapper < TestPagify
40
41
  include DataMapper::Resource
41
42
  property :id, Serial
42
43
  property :name, String
43
- belongs_to :user
44
+ belongs_to :user, :nullable => true
44
45
  end
45
46
 
46
47
  User.auto_migrate!
data/test/test_html.rb CHANGED
@@ -1,9 +1,9 @@
1
1
 
2
2
  require 'test/helper'
3
3
 
4
- require 'pagify/helpers/html'
4
+ require 'pagify/helper/html'
5
5
 
6
- class TestHTML < MiniTest::Unit::TestCase
6
+ class TestHTML < TestCase
7
7
  # def test_page_and_pager_has_same_html
8
8
  # pager = Pagify::ArrayPager.new [1]
9
9
  # assert_equal pager.html.object_id, pager[1].html.object_id
@@ -12,7 +12,7 @@ class TestHTML < MiniTest::Unit::TestCase
12
12
  def test_html
13
13
  pager1 = Pagify::ArrayPager.new []
14
14
  assert_equal ' ', pager1.html.setting[:separator]
15
- assert_equal Pagify::Helpers::HTML.object_id, pager1.html.class.object_id
15
+ assert_equal Pagify::Helper::HTML.object_id, pager1.html.class.object_id
16
16
 
17
17
  pager1.html.setting[:separator] = 'XD'
18
18
  assert_equal 'XD', pager1.html.setting[:separator]
@@ -148,13 +148,39 @@ class TestHTML < MiniTest::Unit::TestCase
148
148
 
149
149
  def test_3_pages
150
150
  pager = Pagify::ArrayPager.new([1,2,3,4,5], :per_page => 2)
151
- assert_equal '&laquo; First <a href="2">2</a> <a href="3">Last &raquo;</a>', pager.html.links(1, &:to_s)
152
- assert_equal '<a href="1">&laquo; First</a> 2 <a href="3">Last &raquo;</a>', pager.html.links(2, &:to_s)
153
- assert_equal '<a href="1">&laquo; First</a> <a href="2">2</a> Last &raquo;', pager.html.links(3, &:to_s)
151
+
152
+ assert_equal '&laquo; First <a href="2">2</a> <a href="3">Last &raquo;</a>',
153
+ pager.html.links(1, &:to_s)
154
+
155
+ assert_equal '<a href="1">&laquo; First</a> 2 <a href="3">Last &raquo;</a>',
156
+ pager.html.links(2, &:to_s)
157
+
158
+ assert_equal '<a href="1">&laquo; First</a> <a href="2">2</a> Last &raquo;',
159
+ pager.html.links(3, &:to_s)
154
160
 
155
161
  assert_equal '<a href="2">Next &gt;</a>', pager.html.links_navigate(1, &:to_s)
156
- assert_equal '<a href="1">&lt; Previous</a> <a href="3">Next &gt;</a>', pager.html.links_navigate(2, &:to_s)
162
+
163
+ assert_equal '<a href="1">&lt; Previous</a> <a href="3">Next &gt;</a>',
164
+ pager.html.links_navigate(2, &:to_s)
165
+
157
166
  assert_equal '<a href="2">&lt; Previous</a>', pager.html.links_navigate(3, &:to_s)
158
167
  end
159
168
 
169
+ def test_more_pages_to_left_or_right
170
+ pager = Pagify::ArrayPager.new((1..33).to_a, :per_page => 3)
171
+
172
+ first = ['&laquo; First', '<a href="1">&laquo; First</a>']
173
+ last = ['Last &raquo;', '<a href="11">Last &raquo;</a>']
174
+
175
+ (1..11).each{ |page|
176
+ expected = (2..10).map{ |i| i == page ? i.to_s : "<a href=\"#{i}\">#{i}</a>" }
177
+
178
+ expected.unshift( page == 1 ? first.first : first.last )
179
+ expected.push( page == 11 ? last.first : last.last )
180
+
181
+ assert_equal expected.join(' '), pager.html.links(page, &:to_s)
182
+ }
183
+
184
+ end
185
+
160
186
  end