Commit | Line | Data |
c0329273 |
1 | BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) } |
83eef562 |
2 | use DBIx::Class::Optional::Dependencies -skip_all_without => 'cdbicompat'; |
3 | |
95a70f01 |
4 | use strict; |
4a233f30 |
5 | use warnings; |
83eef562 |
6 | |
95a70f01 |
7 | use Test::More; |
8 | |
50891152 |
9 | use lib 't/cdbi/testlib'; |
95a70f01 |
10 | use Film; |
11 | |
223b8fe3 |
12 | my $it_class = "DBIx::Class::ResultSet"; |
95a70f01 |
13 | |
14 | my @film = ( |
6a3bf251 |
15 | Film->create({ Title => 'Film 1' }), |
16 | Film->create({ Title => 'Film 2' }), |
17 | Film->create({ Title => 'Film 3' }), |
18 | Film->create({ Title => 'Film 4' }), |
19 | Film->create({ Title => 'Film 5' }), |
20 | Film->create({ Title => 'Film 6' }), |
95a70f01 |
21 | ); |
22 | |
23 | { |
6a3bf251 |
24 | my $it1 = Film->retrieve_all; |
25 | isa_ok $it1, $it_class; |
95a70f01 |
26 | |
6a3bf251 |
27 | my $it2 = Film->retrieve_all; |
28 | isa_ok $it2, $it_class; |
95a70f01 |
29 | |
6a3bf251 |
30 | while (my $from1 = $it1->next) { |
31 | my $from2 = $it2->next; |
32 | is $from1->id, $from2->id, "Both iterators get $from1"; |
33 | } |
95a70f01 |
34 | } |
35 | |
36 | { |
6a3bf251 |
37 | my $it = Film->retrieve_all; |
38 | is $it->first->title, "Film 1", "Film 1 first"; |
39 | is $it->next->title, "Film 2", "Film 2 next"; |
40 | is $it->first->title, "Film 1", "First goes back to 1"; |
41 | is $it->next->title, "Film 2", "With 2 still next"; |
42 | $it->reset; |
43 | is $it->next->title, "Film 1", "Reset brings us to film 1 again"; |
44 | is $it->next->title, "Film 2", "And 2 is still next"; |
95a70f01 |
45 | } |
46 | |
95a70f01 |
47 | |
48 | { |
6a3bf251 |
49 | my $it = Film->retrieve_all; |
50 | my @slice = $it->slice(2,4); |
51 | is @slice, 3, "correct slice size (array)"; |
52 | is $slice[0]->title, "Film 3", "Film 3 first"; |
53 | is $slice[2]->title, "Film 5", "Film 5 last"; |
95a70f01 |
54 | } |
55 | |
56 | { |
6a3bf251 |
57 | my $it = Film->retrieve_all; |
58 | my $slice = $it->slice(2,4); |
59 | isa_ok $slice, $it_class, "slice as iterator"; |
60 | is $slice->count, 3,"correct slice size (array)"; |
61 | is $slice->first->title, "Film 3", "Film 3 first"; |
62 | is $slice->next->title, "Film 4", "Film 4 next"; |
63 | is $slice->first->title, "Film 3", "First goes back to 3"; |
64 | is $slice->next->title, "Film 4", "With 4 still next"; |
65 | $slice->reset; |
66 | is $slice->next->title, "Film 3", "Reset brings us to film 3 again"; |
67 | is $slice->next->title, "Film 4", "And 4 is still next"; |
95a70f01 |
68 | |
6a3bf251 |
69 | # check if the original iterator still works |
70 | is $it->count, 6, "back to the original iterator, is of right size"; |
71 | is $it->first->title, "Film 1", "Film 1 first"; |
72 | is $it->next->title, "Film 2", "Film 2 next"; |
73 | is $it->first->title, "Film 1", "First goes back to 1"; |
74 | is $it->next->title, "Film 2", "With 2 still next"; |
75 | is $it->next->title, "Film 3", "Film 3 is still in original Iterator"; |
76 | $it->reset; |
77 | is $it->next->title, "Film 1", "Reset brings us to film 1 again"; |
78 | is $it->next->title, "Film 2", "And 2 is still next"; |
95a70f01 |
79 | } |
80 | |
e60dc79f |
81 | { |
82 | my $it = Film->retrieve_all; |
83 | is $it, $it->count, "iterator returns count as a scalar"; |
84 | ok $it, "iterator returns true when there are results"; |
85 | } |
86 | |
87 | { |
88 | my $it = Film->search( Title => "something which does not exist" ); |
89 | is $it, 0; |
90 | ok !$it, "iterator returns false when no results"; |
91 | } |
d9bd5195 |
92 | |
93 | done_testing; |