diff --git a/Gemfile.lock b/Gemfile.lock index 55f717b14..187f6e38f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -228,6 +228,7 @@ GEM pathutil (0.16.1) forwardable-extended (~> 2.6) public_suffix (2.0.5) + rack (2.0.5) rake (10.5.0) rb-fsevent (0.10.3) rb-inotify (0.9.10) @@ -273,6 +274,7 @@ DEPENDENCIES memory_profiler minitest (~> 5.0) pagy! + rack rake (~> 10.0) slim diff --git a/lib/pagy/frontend.rb b/lib/pagy/frontend.rb index 139ee03ae..0e43c5ddb 100644 --- a/lib/pagy/frontend.rb +++ b/lib/pagy/frontend.rb @@ -34,7 +34,7 @@ def pagy_info(pagy) # this works with all Rack-based frameworks (Sinatra, Padrino, Rails, ...) def pagy_url_for(n) - url = File.join(request.script_name.to_s, request.path_info) + url = request.path params = request.GET.merge('page'.freeze => n.to_s) url << '?' << Rack::Utils.build_nested_query(pagy_get_params(params)) end diff --git a/pagy.gemspec b/pagy.gemspec index e02a7dc39..9ff487b4e 100644 --- a/pagy.gemspec +++ b/pagy.gemspec @@ -23,6 +23,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'bundler', '~> 1.16' s.add_development_dependency 'rake', '~> 10.0' s.add_development_dependency 'minitest', '~> 5.0' + s.add_development_dependency 'rack' s.add_development_dependency 'slim' s.add_development_dependency 'haml' s.add_development_dependency 'benchmark-ips' diff --git a/test/frontend_test.rb b/test/frontend_test.rb new file mode 100644 index 000000000..3d4791e60 --- /dev/null +++ b/test/frontend_test.rb @@ -0,0 +1,72 @@ +require 'test_helper' +require 'rack' + +class FrontendTest < Minitest::Test + + class TestView + include Pagy::Frontend + + def request + Rack::Request.new('SCRIPT_NAME' => '/foo') + end + end + + def setup + @frontend = TestView.new + @array = (1..103).to_a.extend(Pagy::Array::PageMethod) + end + + def test_pagy_nav_page_1 + pagy, paged = @array.pagy(1) + + assert_equal( + '', + @frontend.pagy_nav(pagy) + ) + end + + def test_pagy_nav_page_3 + pagy, paged = @array.pagy(3) + + assert_equal( + '', + @frontend.pagy_nav(pagy) + ) + end + + def test_pagy_nav_page_6 + pagy, paged = @array.pagy(6) + + assert_equal( + '', + @frontend.pagy_nav(pagy) + ) + end +end