1 package RTest::UI::ViewPort::ListView;
3 use base qw/Reaction::Test::WithDB/;
6 use Reaction::UI::ViewPort::ListView;
10 has '+schema_class' => (default => sub { 'RTest::TestDB' });
13 isa => 'Reaction::UI::ViewPort::ListView',
14 is => 'rw', set_or_lazy_build('viewport'),
15 clearer => 'clear_viewport',
19 isa => 'DBIx::Class::ResultSet',
20 is => 'rw', set_or_lazy_build('collection'),
21 clearer => 'clear_collection',
24 sub build_collection {
25 shift->schema->resultset('Foo');
30 my $vp = Reaction::UI::ViewPort::ListView->new(
32 collection => $self->collection,
33 ctx => $self->simple_mock_context,
34 column_order => [qw(id first_name last_name)],
39 sub null_test :Tests {
41 Test::More::ok(1, 'placeholder test');
44 sub init_viewport :Tests {
47 return "Skip as these all fail";
49 $self->clear_viewport;
51 Test::More::cmp_ok($self->viewport->page, '==', 1, "Default page");
52 Test::More::cmp_ok($self->viewport->per_page, '==', 10, "Default per page");
54 my @columns = qw(id first_name last_name);
55 Test::More::is_deeply($self->viewport->field_names, \@columns, "Field names");
56 Test::More::is($self->viewport->field_label('first_name'), 'First Name', 'Field label');
58 my @rows = $self->viewport->current_rows;
59 Test::More::cmp_ok(@rows, '==', 10, 'Row count');
60 Test::More::isa_ok($rows[0], 'RTest::TestDB::Foo', 'First row class');
61 Test::More::cmp_ok($rows[0]->id, '==', 1, 'First row id');
63 my $pager = $self->viewport->pager;
64 Test::More::cmp_ok($pager->current_page, '==', 1, 'Pager current page');
65 Test::More::cmp_ok($pager->next_page, '==', 2, 'Pager next page');
66 Test::More::ok(!defined($pager->previous_page), 'Pager previous page');
67 Test::More::cmp_ok($pager->entries_per_page, '==', 10, 'Pager entries per page');
70 sub modify_viewport :Tests {
73 return "Skip as these all fail";
75 $self->clear_viewport;
77 $self->viewport->per_page(20);
78 $self->viewport->page(2);
80 my $pager = $self->viewport->pager;
82 Test::More::cmp_ok($pager->current_page, '==', 2, 'Pager current page');
83 Test::More::cmp_ok($pager->last_page, '==', 5, 'Pager last page');
86 sub viewport_to_csv :Tests {
89 return "Skip as these all fail";
91 $self->clear_viewport;
93 $self->viewport->export_to_csv;
95 Test::More::like($self->viewport->ctx->res->body,
96 qr/^Id,"First Name","Last Name"\r
107 /, "CSV export head ok");
108 Test::More::like($self->viewport->ctx->res->body,
109 qr/100,John,"Smith 50"\r\n$/, "CSV export tail ok");