package RTest::UI::ViewPort::ListView; use base qw/Reaction::Test::WithDB/; use Reaction::Class; use Reaction::UI::ViewPort::ListView; use RTest::TestDB; use Test::More (); has '+schema_class' => (default => sub { 'RTest::TestDB' }); has 'viewport' => ( isa => 'Reaction::UI::ViewPort::ListView', is => 'rw', set_or_lazy_build('viewport'), clearer => 'clear_viewport', ); has 'collection' => ( isa => 'DBIx::Class::ResultSet', is => 'rw', set_or_lazy_build('collection'), clearer => 'clear_collection', ); sub build_collection { shift->schema->resultset('Foo'); } sub build_viewport { my ($self) = @_; my $vp = Reaction::UI::ViewPort::ListView->new( location => 0, collection => $self->collection, ctx => $self->simple_mock_context, column_order => [qw(id first_name last_name)], ); return $vp; } sub null_test :Tests { my ($self) = @_; Test::More::ok(1, 'placeholder test'); } sub init_viewport :Tests { my ($self) = @_; return "Skip as these all fail"; $self->clear_viewport; Test::More::cmp_ok($self->viewport->page, '==', 1, "Default page"); Test::More::cmp_ok($self->viewport->per_page, '==', 10, "Default per page"); my @columns = qw(id first_name last_name); Test::More::is_deeply($self->viewport->field_names, \@columns, "Field names"); Test::More::is($self->viewport->field_label('first_name'), 'First Name', 'Field label'); my @rows = $self->viewport->current_rows; Test::More::cmp_ok(@rows, '==', 10, 'Row count'); Test::More::isa_ok($rows[0], 'RTest::TestDB::Foo', 'First row class'); Test::More::cmp_ok($rows[0]->id, '==', 1, 'First row id'); my $pager = $self->viewport->pager; Test::More::cmp_ok($pager->current_page, '==', 1, 'Pager current page'); Test::More::cmp_ok($pager->next_page, '==', 2, 'Pager next page'); Test::More::ok(!defined($pager->previous_page), 'Pager previous page'); Test::More::cmp_ok($pager->entries_per_page, '==', 10, 'Pager entries per page'); } sub modify_viewport :Tests { my ($self) = @_; return "Skip as these all fail"; $self->clear_viewport; $self->viewport->per_page(20); $self->viewport->page(2); my $pager = $self->viewport->pager; Test::More::cmp_ok($pager->current_page, '==', 2, 'Pager current page'); Test::More::cmp_ok($pager->last_page, '==', 5, 'Pager last page'); } sub viewport_to_csv :Tests { my ($self) = @_; return "Skip as these all fail"; $self->clear_viewport; $self->viewport->export_to_csv; Test::More::like($self->viewport->ctx->res->body, qr/^Id,"First Name","Last Name"\r 1,Joe,"Bloggs 1"\r 2,John,"Smith 1"\r 3,Joe,"Bloggs 2"\r 4,John,"Smith 2"\r 5,Joe,"Bloggs 3"\r 6,John,"Smith 3"\r 7,Joe,"Bloggs 4"\r 8,John,"Smith 4"\r 9,Joe,"Bloggs 5"\r 10,John,"Smith 5"\r /, "CSV export head ok"); Test::More::like($self->viewport->ctx->res->body, qr/100,John,"Smith 50"\r\n$/, "CSV export tail ok"); } 1;