The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use strict;
use warnings 'all';
use Test::More 'no_plan';
use lib qw( lib t/lib );

use My::City;

my $state = My::State->find_or_create(
  state_name  => 'Colorado',
  state_abbr  => 'CO',
);

My::City->do_transaction(sub {
  My::City->db_Main->do("delete from cities");
  for(1..1000) {
    My::City->create(
      state_id  => $state->id,
      city_name => 'Unnamed City ' . sprintf('%04d', $_)
    );
  }
});

FIRST_PAGE: {
  my $pager = My::City->pager(undef, {
    page_size   => 10,
    page_number => 1,
  });

  my ($start, $stop) = $pager->navigations( 5 );
  is( $start => 1, "Start=1" );
  is( $stop  => 11, "Stop=11" );
};

PAGE_25: {
  my $pager = My::City->pager(undef, {
    page_size   => 25,
    page_number => 1,
  });

  my ($start, $stop) = $pager->navigations( 5 );
  is( $start => 1, "Start=20" );
  is( $stop  => 11, "Stop=30" );
};

LAST_PAGE: {
  my $pager = My::City->pager( undef, {
    page_size => 10,
    page_number => 100,
  });
  my ($start, $stop) = $pager->navigations( 5 );
  is( $start => 90, "Start=90" );
  is( $stop  => 100, "Stop=100" );
};