8 push @INC, "$FindBin::Bin/lib";
12 use CtrlO::DBIC::Cursor::RowCountStatistics;
18 use parent 'DBIx::Class::Storage::Statistics';
25 my ($self, @args) = @_;
26 push @_COMPLETE, \@args;
30 my $schema = TestSchema->connect(
31 'dbi:SQLite:dbname=:memory:',
35 cursor_class => 'CtrlO::DBIC::Cursor::RowCountStatistics',
39 $schema->storage->debugobj(TestStats->new);
40 $schema->storage->debug(1);
42 ok $schema, 'schema created';
43 is $schema->storage->cursor_class,
44 'CtrlO::DBIC::Cursor::RowCountStatistics',
47 my $rs = $schema->resultset('Test');
49 subtest 'count with ->next' => sub {
51 $rs->create({ id => $_ }) for 1..10;
53 my $rows = $rs->search_rs;
54 is ref($rows->cursor), 'CtrlO::DBIC::Cursor::RowCountStatistics',
58 is scalar(@_COMPLETE), 1, 'single complete call';
59 is $_COMPLETE[0][0], 10, 'full count';
60 ok length($_COMPLETE[0][1]), 'SQL was passed';
61 like $_COMPLETE[0][1], qr{SELECT}i, 'SQL contains SELECT';
65 subtest 'count with ->all' => sub {
67 $rs->create({ id => $_ }) for 1..10;
69 my $rows = $rs->search_rs;
70 is ref($rows->cursor), 'CtrlO::DBIC::Cursor::RowCountStatistics',
74 is scalar(@_COMPLETE), 1, 'single complete call';
75 is $_COMPLETE[0][0], 10, 'full count';
79 subtest 'empty' => sub {
82 my $rows = $rs->search_rs;
85 is scalar(@_COMPLETE), 1, 'single complete call';
86 is $_COMPLETE[0][0], 0, 'full count';
89 subtest 'no fetch' => sub {
91 $rs->create({ id => $_ }) for 1..10;
93 my $rows = $rs->search_rs;
95 is scalar(@_COMPLETE), 0, 'no complete calls';