879060322c23d2b5b20cdb2248d7bdb635a9a9ef
[dbsrgits/DBIx-Class.git] / t / search / reentrancy.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5
6 use lib qw(t/lib);
7 use DBICTest;
8
9 my $schema = DBICTest->init_schema();
10
11 my $track_titles = { map { @$_ }
12   $schema->resultset('Track')
13           ->search({}, { columns => [qw(trackid title)] })
14            ->cursor
15             ->all
16 };
17
18 my $rs = $schema->resultset('Track');
19
20 for my $pass (1,2,3) {
21   for my $meth (qw(search single find)) {
22
23     my $id = (keys %$track_titles)[0];
24     my $tit = delete $track_titles->{$id};
25
26     my ($o) = $rs->$meth({ trackid => $id });
27
28     is(
29       $rs->count({ trackid => $id }),
30       1,
31       "Count works (pass $pass)",
32     );
33
34     is(
35       $o->title,
36       $tit,
37       "Correct object retrieved via $meth() (pass $pass)"
38     );
39
40     $o->delete;
41
42     is(
43       $rs->count_rs({ trackid => $id })->next,
44       0,
45       "Count_rs works (pass $pass)",
46     );
47   }
48 }
49
50 done_testing;