From a927d57f44e457061a9701bb23c250831bf09e2f Mon Sep 17 00:00:00 2001 From: Michael Grosser Date: Thu, 31 May 2018 17:11:21 -0700 Subject: [PATCH] improve testability by sorting tests into files that mirror lib + group by method (#37) --- test/api_test.rb | 37 ---- test/frontend_test.rb | 72 -------- test/i18n_test.rb | 64 ------- test/metrics_test.rb | 233 ----------------------- test/pagy/frontend_test.rb | 129 +++++++++++++ test/pagy_test.rb | 370 +++++++++++++++++++++++++++++++++++++ test/series_test.rb | 106 ----------- test/test_helper.rb | 2 +- 8 files changed, 500 insertions(+), 513 deletions(-) delete mode 100644 test/api_test.rb delete mode 100644 test/frontend_test.rb delete mode 100644 test/i18n_test.rb delete mode 100644 test/metrics_test.rb create mode 100644 test/pagy/frontend_test.rb create mode 100644 test/pagy_test.rb delete mode 100644 test/series_test.rb diff --git a/test/api_test.rb b/test/api_test.rb deleted file mode 100644 index bf19116ec..000000000 --- a/test/api_test.rb +++ /dev/null @@ -1,37 +0,0 @@ -require "test_helper" - -class ApiTest < Minitest::Test - - def setup - @pagy = Pagy.new count: 100, page: 4 - end - - def test_version_number - refute_nil Pagy::VERSION - end - - def test_initialization - assert_instance_of Pagy, @pagy - assert_instance_of Pagy, Pagy.new(count: 100) - assert_instance_of Pagy, Pagy.new(count: '100') - assert_instance_of Pagy, Pagy.new(count: 100, page: '2') - assert_instance_of Pagy, Pagy.new(count: 100, page: '') - assert_instance_of Pagy, Pagy.new(count: 100, items: '10') - assert_raises(ArgumentError) { Pagy.new({}) } - assert_raises(ArgumentError) { Pagy.new(count: 100, page: 0) } - assert_raises(ArgumentError) { Pagy.new(count: 100, page: 2, items: 0) } - assert_raises(ArgumentError) { Pagy.new(count: 100, page: 2, size: [1,2,3]).series } - assert_raises(ArgumentError) { Pagy.new(count: 100, page: 2, size: [1,2,3,'4']).series } - assert_raises(Pagy::OutOfRangeError) { Pagy.new(count: 100, page: '11') } - assert_raises(Pagy::OutOfRangeError) { Pagy.new(count: 100, page: 12 ) } - end - - def test_respond_to_accessors - [:count, :page, :items, :vars, # input - :offset, :pages, :last, :from, :to, :prev, :next, :series # output - ].each do |meth| - assert_respond_to @pagy, meth - end - end - -end diff --git a/test/frontend_test.rb b/test/frontend_test.rb deleted file mode 100644 index 98b34e9a8..000000000 --- a/test/frontend_test.rb +++ /dev/null @@ -1,72 +0,0 @@ -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, _ = @array.pagy(1) - - assert_equal( - '', - @frontend.pagy_nav(pagy) - ) - end - - def test_pagy_nav_page_3 - pagy, _ = @array.pagy(3) - - assert_equal( - '', - @frontend.pagy_nav(pagy) - ) - end - - def test_pagy_nav_page_6 - pagy, _ = @array.pagy(6) - - assert_equal( - '', - @frontend.pagy_nav(pagy) - ) - end -end diff --git a/test/i18n_test.rb b/test/i18n_test.rb deleted file mode 100644 index a0679f1c2..000000000 --- a/test/i18n_test.rb +++ /dev/null @@ -1,64 +0,0 @@ -require "test_helper" - -class I18nTest < Minitest::Test - - class TestI18n; - include Pagy::Frontend - end - - def setup - @i18n = TestI18n.new - end - - def test_data - assert_equal "‹ Prev", Pagy::Frontend::I18N_DATA['pagy']['nav']['prev'] - assert_equal "…", Pagy::Frontend::I18N_DATA['pagy']['nav']['gap'] - end - - def test_translation - assert_equal "‹ Prev", @i18n.pagy_t('pagy.nav.prev') - - assert_equal "items", @i18n.pagy_t('pagy.info.item_name', count: 0) - assert_equal "item", @i18n.pagy_t('pagy.info.item_name', count: 1) - assert_equal "items", @i18n.pagy_t('pagy.info.item_name', count: 10) - - assert_equal "No %{item_name} found", - @i18n.pagy_t('pagy.info.single_page', count: 0) - assert_equal "Displaying 1 %{item_name}", - @i18n.pagy_t('pagy.info.single_page', count: 1) - assert_equal "Displaying all 10 %{item_name}", - @i18n.pagy_t('pagy.info.single_page', count: 10) - assert_equal "Displaying %{item_name} %{from}-%{to} of 10 in total", - @i18n.pagy_t('pagy.info.multiple_pages', count: 10) - end - - def test_missing - assert_equal 'translation missing: "pagy.nav.not_here"', @i18n.pagy_t('pagy.nav.not_here') - end - - def test_render_info_no_118n_key - pagy = Pagy.new count: 0 - assert_equal "No items found", @i18n.pagy_info(pagy) - pagy = Pagy.new count: 1 - assert_equal "Displaying 1 item", @i18n.pagy_info(pagy) - pagy = Pagy.new count: 13 - assert_equal "Displaying all 13 items", @i18n.pagy_info(pagy) - pagy = Pagy.new count: 100, page: 3 - assert_equal "Displaying items 41-60 of 100 in total", @i18n.pagy_info(pagy) - end - - def test_render_info_with_existing_118n_key - Pagy::Frontend::I18N_DATA['pagy']['info']['product'] = { 'zero' => 'Products', - 'one' => 'Product', - 'other' => 'Products' } - pagy = Pagy.new count: 0, item_path: 'pagy.info.product' - assert_equal "No Products found", @i18n.pagy_info(pagy) - pagy = Pagy.new count: 1, item_path: 'pagy.info.product' - assert_equal "Displaying 1 Product", @i18n.pagy_info(pagy) - pagy = Pagy.new count: 13, item_path: 'pagy.info.product' - assert_equal "Displaying all 13 Products", @i18n.pagy_info(pagy) - pagy = Pagy.new count: 100, page: 3, item_path: 'pagy.info.product' - assert_equal "Displaying Products 41-60 of 100 in total", @i18n.pagy_info(pagy) - end - -end diff --git a/test/metrics_test.rb b/test/metrics_test.rb deleted file mode 100644 index 39cc1eb8b..000000000 --- a/test/metrics_test.rb +++ /dev/null @@ -1,233 +0,0 @@ -require "test_helper" - -class MetricsTest < Minitest::Test - - def setup - @vars = { items: 10, size: [3,2,2,3] } - @array = (1..103).to_a.extend(Pagy::Array::PageMethod) - end - - def test_count_0 - pagy = Pagy.new @vars.merge(count: 0) - assert_equal 1, pagy.pages - assert_equal 1, pagy.last - assert_equal 0, pagy.offset - assert_equal 0, pagy.from - assert_equal 0, pagy.to - assert_nil pagy.prev - assert_nil pagy.next - assert_equal ["1"], pagy.series - end - - def test_single_page - pagy = Pagy.new @vars.merge(count: 8) - assert_equal 1, pagy.pages - assert_equal 1, pagy.last - assert_equal 0, pagy.offset - assert_equal 1, pagy.from - assert_equal 8, pagy.to - assert_nil pagy.prev - assert_nil pagy.next - assert_equal ["1"], pagy.series - end - - def test_1_of_2_pages - pagy = Pagy.new @vars.merge(count: 15) - assert_equal 2, pagy.pages - assert_equal 2, pagy.last - assert_equal 0, pagy.offset - assert_equal 1, pagy.from - assert_equal 10, pagy.to - assert_nil pagy.prev - assert_equal 2, pagy.next - assert_equal ["1", 2], pagy.series - end - - def test_2_of_2_pages - pagy = Pagy.new @vars.merge(count: 15, page: 2) - assert_equal 2, pagy.pages - assert_equal 2, pagy.last - assert_equal 10, pagy.offset - assert_equal 11, pagy.from - assert_equal 15, pagy.to - assert_equal 1, pagy.prev - assert_nil pagy.next - assert_equal [1, "2"], pagy.series - end - - def test_page_1 - pagy, paged = @array.pagy(1, @vars) - assert_equal (1..10).to_a, paged - assert_instance_of Pagy, pagy - assert_equal 1, pagy.from - assert_equal 10, pagy.to - assert_nil pagy.prev - assert_equal 1, pagy.page - assert_equal 2, pagy.next - assert_equal ["1", 2, 3, :gap, 9, 10, 11], pagy.series - end - - def test_page_2 - pagy, paged = @array.pagy(2, @vars) - assert_equal (11..20).to_a, paged - assert_instance_of Pagy, pagy - assert_equal 11, pagy.from - assert_equal 20, pagy.to - assert_equal 1, pagy.prev - assert_equal 2, pagy.page - assert_equal 3, pagy.next - assert_equal [1, "2", 3, 4, :gap, 9, 10, 11], pagy.series - end - - def test_page_3 - pagy, paged = @array.pagy(3, @vars) - assert_equal (21..30).to_a, paged - assert_instance_of Pagy, pagy - assert_equal 21, pagy.from - assert_equal 30, pagy.to - assert_equal 2, pagy.prev - assert_equal 3, pagy.page - assert_equal 4, pagy.next - assert_equal [1, 2, "3", 4, 5, :gap, 9, 10, 11], pagy.series - end - - def test_page_4 - pagy, paged = @array.pagy(4, @vars) - assert_equal (31..40).to_a, paged - assert_instance_of Pagy, pagy - assert_equal 31, pagy.from - assert_equal 40, pagy.to - assert_equal 3, pagy.prev - assert_equal 4, pagy.page - assert_equal 5, pagy.next - assert_equal [1, 2, 3, "4", 5, 6, :gap, 9, 10, 11], pagy.series - end - - def test_page_5 - pagy, paged = @array.pagy(5, @vars) - assert_equal (41..50).to_a, paged - assert_instance_of Pagy, pagy - assert_equal 41, pagy.from - assert_equal 50, pagy.to - assert_equal 4, pagy.prev - assert_equal 5, pagy.page - assert_equal 6, pagy.next - assert_equal [1, 2, 3, 4, "5", 6, 7, 8, 9, 10, 11], pagy.series - end - - def test_page_6 - pagy, paged = @array.pagy(6, @vars) - assert_equal (51..60).to_a, paged - assert_equal 51, pagy.from - assert_equal 60, pagy.to - assert_instance_of Pagy, pagy - assert_equal 5, pagy.prev - assert_equal 6, pagy.page - assert_equal 7, pagy.next - assert_equal [1, 2, 3, 4, 5, "6", 7, 8, 9, 10, 11], pagy.series - end - - def test_page_7 - pagy, paged = @array.pagy(7, @vars) - assert_equal (61..70).to_a, paged - assert_instance_of Pagy, pagy - assert_equal 61, pagy.from - assert_equal 70, pagy.to - assert_equal 6, pagy.prev - assert_equal 7, pagy.page - assert_equal 8, pagy.next - assert_equal [1, 2, 3, 4, 5, 6, "7", 8, 9, 10, 11], pagy.series - end - - def test_page_8 - pagy, paged = @array.pagy(8, @vars) - assert_equal (71..80).to_a, paged - assert_instance_of Pagy, pagy - assert_equal 71, pagy.from - assert_equal 80, pagy.to - assert_equal 7, pagy.prev - assert_equal 8, pagy.page - assert_equal 9, pagy.next - assert_equal [1, 2, 3, :gap, 6, 7, "8", 9, 10, 11], pagy.series - end - - def test_page_9 - pagy, paged = @array.pagy(9, @vars) - assert_equal (81..90).to_a, paged - assert_instance_of Pagy, pagy - assert_equal 81, pagy.from - assert_equal 90, pagy.to - assert_equal 8, pagy.prev - assert_equal 9, pagy.page - assert_equal 10, pagy.next - assert_equal [1, 2, 3, :gap, 7, 8, "9", 10, 11], pagy.series - end - - def test_page_10 - pagy, paged = @array.pagy(10, @vars) - assert_equal (91..100).to_a, paged - assert_instance_of Pagy, pagy - assert_equal 91, pagy.from - assert_equal 100, pagy.to - assert_equal 9, pagy.prev - assert_equal 10, pagy.page - assert_equal 11, pagy.next - assert_equal [1, 2, 3, :gap, 8, 9, "10", 11], pagy.series - end - - def test_page_11 - pagy, paged = @array.pagy(11, @vars) - assert_equal (101..103).to_a, paged - assert_instance_of Pagy, pagy - assert_equal 101, pagy.from - assert_equal 103, pagy.to - assert_equal 10, pagy.prev - assert_equal 11, pagy.page - assert_nil pagy.next - assert_equal [1, 2, 3, :gap, 9, 10, "11"], pagy.series - end - - def test_other_output - pagy = Pagy.new @vars.merge(count: 103, page: 2) - assert_equal 103, pagy.count - assert_equal 10, pagy.items - assert_equal 10, pagy.offset - assert_equal 11 , pagy.pages - assert_equal 11, pagy.last - end - - def test_initial_offset_page_1 - pagy = Pagy.new(count: 87, page:1, outset:10, items: 10) - assert_equal 10, pagy.offset - assert_equal 10, pagy.items - assert_equal 1, pagy.from - assert_equal 10, pagy.to - assert_equal 9, pagy.pages - end - - def test_initial_offset_page_9 - pagy = Pagy.new(count: 87, page:9, outset:10, items: 10) - assert_equal 90, pagy.offset - assert_equal 7, pagy.items - assert_equal 81, pagy.from - assert_equal 87, pagy.to - assert_equal 9, pagy.pages - end - - def test_items_of_last_page_of_one - pagy = Pagy.new items: 10, count: 0 - assert_equal 0, pagy.items - pagy = Pagy.new items: 10, count: 4 - assert_equal 4, pagy.items - pagy = Pagy.new items: 10, count: 10 - assert_equal 10, pagy.items - end - - def test_items_of_last_page_of_many - pagy = Pagy.new items: 10, count: 14, page: 2 - assert_equal 4, pagy.items - pagy = Pagy.new items: 10, count: 20, page: 2 - assert_equal 10, pagy.items - end - -end diff --git a/test/pagy/frontend_test.rb b/test/pagy/frontend_test.rb new file mode 100644 index 000000000..7f7b53250 --- /dev/null +++ b/test/pagy/frontend_test.rb @@ -0,0 +1,129 @@ +require_relative '../test_helper' +require 'rack' + +describe Pagy::Frontend do + + class TestView + include Pagy::Frontend + + def request + Rack::Request.new('SCRIPT_NAME' => '/foo') + end + end + + let(:frontend) { TestView.new } + + describe "#pagy_nav" do + before do + @array = (1..103).to_a.extend(Pagy::Array::PageMethod) + end + + def test_pagy_nav_page_1 + pagy, _ = @array.pagy(1) + + assert_equal( + '', + frontend.pagy_nav(pagy) + ) + end + + def test_pagy_nav_page_3 + pagy, _ = @array.pagy(3) + + assert_equal( + '', + frontend.pagy_nav(pagy) + ) + end + + def test_pagy_nav_page_6 + pagy, _ = @array.pagy(6) + + assert_equal( + '', + frontend.pagy_nav(pagy) + ) + end + end + + describe "#pagy_t" do + def test_data + assert_equal "‹ Prev", Pagy::Frontend::I18N_DATA['pagy']['nav']['prev'] + assert_equal "…", Pagy::Frontend::I18N_DATA['pagy']['nav']['gap'] + end + + def test_translation + assert_equal "‹ Prev", frontend.pagy_t('pagy.nav.prev') + + assert_equal "items", frontend.pagy_t('pagy.info.item_name', count: 0) + assert_equal "item", frontend.pagy_t('pagy.info.item_name', count: 1) + assert_equal "items", frontend.pagy_t('pagy.info.item_name', count: 10) + + assert_equal "No %{item_name} found", + frontend.pagy_t('pagy.info.single_page', count: 0) + assert_equal "Displaying 1 %{item_name}", + frontend.pagy_t('pagy.info.single_page', count: 1) + assert_equal "Displaying all 10 %{item_name}", + frontend.pagy_t('pagy.info.single_page', count: 10) + assert_equal "Displaying %{item_name} %{from}-%{to} of 10 in total", + frontend.pagy_t('pagy.info.multiple_pages', count: 10) + end + + def test_missing + assert_equal 'translation missing: "pagy.nav.not_here"', frontend.pagy_t('pagy.nav.not_here') + end + + def test_render_info_no_118n_key + pagy = Pagy.new count: 0 + assert_equal "No items found", frontend.pagy_info(pagy) + pagy = Pagy.new count: 1 + assert_equal "Displaying 1 item", frontend.pagy_info(pagy) + pagy = Pagy.new count: 13 + assert_equal "Displaying all 13 items", frontend.pagy_info(pagy) + pagy = Pagy.new count: 100, page: 3 + assert_equal "Displaying items 41-60 of 100 in total", frontend.pagy_info(pagy) + end + + def test_render_info_with_existing_118n_key + Pagy::Frontend::I18N_DATA['pagy']['info']['product'] = { 'zero' => 'Products', + 'one' => 'Product', + 'other' => 'Products' } + pagy = Pagy.new count: 0, item_path: 'pagy.info.product' + assert_equal "No Products found", frontend.pagy_info(pagy) + pagy = Pagy.new count: 1, item_path: 'pagy.info.product' + assert_equal "Displaying 1 Product", frontend.pagy_info(pagy) + pagy = Pagy.new count: 13, item_path: 'pagy.info.product' + assert_equal "Displaying all 13 Products", frontend.pagy_info(pagy) + pagy = Pagy.new count: 100, page: 3, item_path: 'pagy.info.product' + assert_equal "Displaying Products 41-60 of 100 in total", frontend.pagy_info(pagy) + end + end + +end diff --git a/test/pagy_test.rb b/test/pagy_test.rb new file mode 100644 index 000000000..537c3ee7b --- /dev/null +++ b/test/pagy_test.rb @@ -0,0 +1,370 @@ +require_relative 'test_helper' + +describe Pagy do + let(:pagy) { Pagy.new count: 100, page: 4 } + + def test_version_number + refute_nil Pagy::VERSION + end + + describe "#initialize" do + def test_initialization + assert_instance_of Pagy, pagy + assert_instance_of Pagy, Pagy.new(count: 100) + assert_instance_of Pagy, Pagy.new(count: '100') + assert_instance_of Pagy, Pagy.new(count: 100, page: '2') + assert_instance_of Pagy, Pagy.new(count: 100, page: '') + assert_instance_of Pagy, Pagy.new(count: 100, items: '10') + assert_raises(ArgumentError) { Pagy.new({}) } + assert_raises(ArgumentError) { Pagy.new(count: 100, page: 0) } + assert_raises(ArgumentError) { Pagy.new(count: 100, page: 2, items: 0) } + assert_raises(ArgumentError) { Pagy.new(count: 100, page: 2, size: [1,2,3]).series } + assert_raises(ArgumentError) { Pagy.new(count: 100, page: 2, size: [1,2,3,'4']).series } + assert_raises(Pagy::OutOfRangeError) { Pagy.new(count: 100, page: '11') } + assert_raises(Pagy::OutOfRangeError) { Pagy.new(count: 100, page: 12 ) } + end + end + + describe "accessors" do + def test_respond_to_accessors + [ + :count, :page, :items, :vars, # input + :offset, :pages, :last, :from, :to, :prev, :next, :series # output + ].each do |meth| + assert_respond_to pagy, meth + end + end + end + + describe "#series" do + def setup + @vars0 = { count: 103, + items: 10, + size: [0,2,2,0] } + + @vars1 = { count: 103, + items: 10, + size: [3,0,0,3] } + + @vars2 = { count: 103, + items: 10, + size: [3,2,0,0] } + + end + + def series_tests(page, *expected) + expected.each_with_index do |e, i| + vars = instance_variable_get(:"@vars#{i}").merge(page: page) + assert_equal e, Pagy.new(vars).series + end + end + + def test_page_1 + series_tests 1, + ["1", 2, 3, :gap], + ["1", 2, 3, :gap, 9, 10, 11], + ["1", 2, 3, :gap] + end + + def test_page_2 + series_tests 2, + [1, "2", 3, 4, :gap], + [1, "2", 3, :gap, 9, 10, 11], + [1, "2", 3, :gap] + end + + def test_page_3 + series_tests 3, + [1, 2, "3", 4, 5, :gap], + [1, 2, "3", :gap, 9, 10, 11], + [1, 2, "3", :gap] + end + + def test_page_4 + series_tests 4, + [1, 2, 3, "4", 5, 6, :gap], + [1, 2, 3, "4", :gap, 9, 10, 11], + [1, 2, 3, "4", :gap] + end + + def test_page_5 + series_tests 5, + [:gap, 3, 4, "5", 6, 7, :gap], + [1, 2, 3, 4, "5", :gap, 9, 10, 11], + [1, 2, 3, 4, "5", :gap] + end + + def test_page_6 + series_tests 6, + [:gap, 4, 5, "6", 7, 8, :gap], + [1, 2, 3, :gap, "6", :gap, 9, 10, 11], + [1, 2, 3, 4, 5, "6", :gap] + end + + def test_page_7 + series_tests 7, + [:gap, 5, 6, "7", 8, 9, :gap], + [1, 2, 3, :gap, "7", 8, 9, 10, 11], + [1, 2, 3, 4, 5, 6, "7", :gap] + end + + def test_page_8 + series_tests 8, + [:gap, 6, 7, "8", 9, 10, 11], + [1, 2, 3, :gap, "8", 9, 10, 11], + [1, 2, 3, :gap, 6, 7, "8", :gap] + end + + def test_page_9 + series_tests 9, + [:gap, 7, 8, "9", 10, 11], + [1, 2, 3, :gap, "9", 10, 11], + [1, 2, 3, :gap, 7, 8, "9", :gap] + end + + def test_page_10 + series_tests 10, + [:gap, 8, 9, "10", 11], + [1, 2, 3, :gap, 9, "10", 11], + [1, 2, 3, :gap, 8, 9, "10", 11] + end + + def test_page_11 + series_tests 11, + [:gap, 9, 10, "11"], + [1, 2, 3, :gap, 9, 10, "11"], + [1, 2, 3, :gap, 9, 10, "11"] + end + end + + # TODO: split these into #initialize or #series + describe "metrics" do + def setup + @vars = { items: 10, size: [3,2,2,3] } + @array = (1..103).to_a.extend(Pagy::Array::PageMethod) + end + + def test_count_0 + pagy = Pagy.new @vars.merge(count: 0) + assert_equal 1, pagy.pages + assert_equal 1, pagy.last + assert_equal 0, pagy.offset + assert_equal 0, pagy.from + assert_equal 0, pagy.to + assert_nil pagy.prev + assert_nil pagy.next + assert_equal ["1"], pagy.series + end + + def test_single_page + pagy = Pagy.new @vars.merge(count: 8) + assert_equal 1, pagy.pages + assert_equal 1, pagy.last + assert_equal 0, pagy.offset + assert_equal 1, pagy.from + assert_equal 8, pagy.to + assert_nil pagy.prev + assert_nil pagy.next + assert_equal ["1"], pagy.series + end + + def test_1_of_2_pages + pagy = Pagy.new @vars.merge(count: 15) + assert_equal 2, pagy.pages + assert_equal 2, pagy.last + assert_equal 0, pagy.offset + assert_equal 1, pagy.from + assert_equal 10, pagy.to + assert_nil pagy.prev + assert_equal 2, pagy.next + assert_equal ["1", 2], pagy.series + end + + def test_2_of_2_pages + pagy = Pagy.new @vars.merge(count: 15, page: 2) + assert_equal 2, pagy.pages + assert_equal 2, pagy.last + assert_equal 10, pagy.offset + assert_equal 11, pagy.from + assert_equal 15, pagy.to + assert_equal 1, pagy.prev + assert_nil pagy.next + assert_equal [1, "2"], pagy.series + end + + def test_page_1 + pagy, paged = @array.pagy(1, @vars) + assert_equal (1..10).to_a, paged + assert_instance_of Pagy, pagy + assert_equal 1, pagy.from + assert_equal 10, pagy.to + assert_nil pagy.prev + assert_equal 1, pagy.page + assert_equal 2, pagy.next + assert_equal ["1", 2, 3, :gap, 9, 10, 11], pagy.series + end + + def test_page_2 + pagy, paged = @array.pagy(2, @vars) + assert_equal (11..20).to_a, paged + assert_instance_of Pagy, pagy + assert_equal 11, pagy.from + assert_equal 20, pagy.to + assert_equal 1, pagy.prev + assert_equal 2, pagy.page + assert_equal 3, pagy.next + assert_equal [1, "2", 3, 4, :gap, 9, 10, 11], pagy.series + end + + def test_page_3 + pagy, paged = @array.pagy(3, @vars) + assert_equal (21..30).to_a, paged + assert_instance_of Pagy, pagy + assert_equal 21, pagy.from + assert_equal 30, pagy.to + assert_equal 2, pagy.prev + assert_equal 3, pagy.page + assert_equal 4, pagy.next + assert_equal [1, 2, "3", 4, 5, :gap, 9, 10, 11], pagy.series + end + + def test_page_4 + pagy, paged = @array.pagy(4, @vars) + assert_equal (31..40).to_a, paged + assert_instance_of Pagy, pagy + assert_equal 31, pagy.from + assert_equal 40, pagy.to + assert_equal 3, pagy.prev + assert_equal 4, pagy.page + assert_equal 5, pagy.next + assert_equal [1, 2, 3, "4", 5, 6, :gap, 9, 10, 11], pagy.series + end + + def test_page_5 + pagy, paged = @array.pagy(5, @vars) + assert_equal (41..50).to_a, paged + assert_instance_of Pagy, pagy + assert_equal 41, pagy.from + assert_equal 50, pagy.to + assert_equal 4, pagy.prev + assert_equal 5, pagy.page + assert_equal 6, pagy.next + assert_equal [1, 2, 3, 4, "5", 6, 7, 8, 9, 10, 11], pagy.series + end + + def test_page_6 + pagy, paged = @array.pagy(6, @vars) + assert_equal (51..60).to_a, paged + assert_equal 51, pagy.from + assert_equal 60, pagy.to + assert_instance_of Pagy, pagy + assert_equal 5, pagy.prev + assert_equal 6, pagy.page + assert_equal 7, pagy.next + assert_equal [1, 2, 3, 4, 5, "6", 7, 8, 9, 10, 11], pagy.series + end + + def test_page_7 + pagy, paged = @array.pagy(7, @vars) + assert_equal (61..70).to_a, paged + assert_instance_of Pagy, pagy + assert_equal 61, pagy.from + assert_equal 70, pagy.to + assert_equal 6, pagy.prev + assert_equal 7, pagy.page + assert_equal 8, pagy.next + assert_equal [1, 2, 3, 4, 5, 6, "7", 8, 9, 10, 11], pagy.series + end + + def test_page_8 + pagy, paged = @array.pagy(8, @vars) + assert_equal (71..80).to_a, paged + assert_instance_of Pagy, pagy + assert_equal 71, pagy.from + assert_equal 80, pagy.to + assert_equal 7, pagy.prev + assert_equal 8, pagy.page + assert_equal 9, pagy.next + assert_equal [1, 2, 3, :gap, 6, 7, "8", 9, 10, 11], pagy.series + end + + def test_page_9 + pagy, paged = @array.pagy(9, @vars) + assert_equal (81..90).to_a, paged + assert_instance_of Pagy, pagy + assert_equal 81, pagy.from + assert_equal 90, pagy.to + assert_equal 8, pagy.prev + assert_equal 9, pagy.page + assert_equal 10, pagy.next + assert_equal [1, 2, 3, :gap, 7, 8, "9", 10, 11], pagy.series + end + + def test_page_10 + pagy, paged = @array.pagy(10, @vars) + assert_equal (91..100).to_a, paged + assert_instance_of Pagy, pagy + assert_equal 91, pagy.from + assert_equal 100, pagy.to + assert_equal 9, pagy.prev + assert_equal 10, pagy.page + assert_equal 11, pagy.next + assert_equal [1, 2, 3, :gap, 8, 9, "10", 11], pagy.series + end + + def test_page_11 + pagy, paged = @array.pagy(11, @vars) + assert_equal (101..103).to_a, paged + assert_instance_of Pagy, pagy + assert_equal 101, pagy.from + assert_equal 103, pagy.to + assert_equal 10, pagy.prev + assert_equal 11, pagy.page + assert_nil pagy.next + assert_equal [1, 2, 3, :gap, 9, 10, "11"], pagy.series + end + + def test_other_output + pagy = Pagy.new @vars.merge(count: 103, page: 2) + assert_equal 103, pagy.count + assert_equal 10, pagy.items + assert_equal 10, pagy.offset + assert_equal 11 , pagy.pages + assert_equal 11, pagy.last + end + + def test_initial_offset_page_1 + pagy = Pagy.new(count: 87, page:1, outset:10, items: 10) + assert_equal 10, pagy.offset + assert_equal 10, pagy.items + assert_equal 1, pagy.from + assert_equal 10, pagy.to + assert_equal 9, pagy.pages + end + + def test_initial_offset_page_9 + pagy = Pagy.new(count: 87, page:9, outset:10, items: 10) + assert_equal 90, pagy.offset + assert_equal 7, pagy.items + assert_equal 81, pagy.from + assert_equal 87, pagy.to + assert_equal 9, pagy.pages + end + + def test_items_of_last_page_of_one + pagy = Pagy.new items: 10, count: 0 + assert_equal 0, pagy.items + pagy = Pagy.new items: 10, count: 4 + assert_equal 4, pagy.items + pagy = Pagy.new items: 10, count: 10 + assert_equal 10, pagy.items + end + + def test_items_of_last_page_of_many + pagy = Pagy.new items: 10, count: 14, page: 2 + assert_equal 4, pagy.items + pagy = Pagy.new items: 10, count: 20, page: 2 + assert_equal 10, pagy.items + end + end +end diff --git a/test/series_test.rb b/test/series_test.rb deleted file mode 100644 index 214090bef..000000000 --- a/test/series_test.rb +++ /dev/null @@ -1,106 +0,0 @@ -require "test_helper" - -class SeriesTest < Minitest::Test - - - def setup - - @vars0 = { count: 103, - items: 10, - size: [0,2,2,0] } - - @vars1 = { count: 103, - items: 10, - size: [3,0,0,3] } - - @vars2 = { count: 103, - items: 10, - size: [3,2,0,0] } - - end - - def series_tests(page, *expected) - expected.each_with_index do |e, i| - vars = instance_variable_get(:"@vars#{i}").merge(page: page) - assert_equal e, Pagy.new(vars).series - end - end - - def test_page_1 - series_tests 1, - ["1", 2, 3, :gap], - ["1", 2, 3, :gap, 9, 10, 11], - ["1", 2, 3, :gap] - end - - def test_page_2 - series_tests 2, - [1, "2", 3, 4, :gap], - [1, "2", 3, :gap, 9, 10, 11], - [1, "2", 3, :gap] - end - - def test_page_3 - series_tests 3, - [1, 2, "3", 4, 5, :gap], - [1, 2, "3", :gap, 9, 10, 11], - [1, 2, "3", :gap] - end - - def test_page_4 - series_tests 4, - [1, 2, 3, "4", 5, 6, :gap], - [1, 2, 3, "4", :gap, 9, 10, 11], - [1, 2, 3, "4", :gap] - end - - def test_page_5 - series_tests 5, - [:gap, 3, 4, "5", 6, 7, :gap], - [1, 2, 3, 4, "5", :gap, 9, 10, 11], - [1, 2, 3, 4, "5", :gap] - end - - def test_page_6 - series_tests 6, - [:gap, 4, 5, "6", 7, 8, :gap], - [1, 2, 3, :gap, "6", :gap, 9, 10, 11], - [1, 2, 3, 4, 5, "6", :gap] - end - - def test_page_7 - series_tests 7, - [:gap, 5, 6, "7", 8, 9, :gap], - [1, 2, 3, :gap, "7", 8, 9, 10, 11], - [1, 2, 3, 4, 5, 6, "7", :gap] - end - - def test_page_8 - series_tests 8, - [:gap, 6, 7, "8", 9, 10, 11], - [1, 2, 3, :gap, "8", 9, 10, 11], - [1, 2, 3, :gap, 6, 7, "8", :gap] - end - - def test_page_9 - series_tests 9, - [:gap, 7, 8, "9", 10, 11], - [1, 2, 3, :gap, "9", 10, 11], - [1, 2, 3, :gap, 7, 8, "9", :gap] - end - - def test_page_10 - series_tests 10, - [:gap, 8, 9, "10", 11], - [1, 2, 3, :gap, 9, "10", 11], - [1, 2, 3, :gap, 8, 9, "10", 11] - end - - def test_page_11 - series_tests 11, - [:gap, 9, 10, "11"], - [1, 2, 3, :gap, 9, 10, "11"], - [1, 2, 3, :gap, 9, 10, "11"] - end - -end diff --git a/test/test_helper.rb b/test/test_helper.rb index e170bf83b..f5dd8d23d 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,4 +1,4 @@ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__) require 'pagy' -require 'array.rb' +require_relative 'array' require "minitest/autorun"