22841c426bb8a2b3abc01b34efca02d00a8f59ff
[dbsrgits/DBIx-Class.git] / t / cdbi / object_cache.t
1 use strict;
2 use warnings;
3 use Test::More;
4 $| = 1;
5
6
7 use lib 't/cdbi/testlib';
8 use Film;
9
10 ok +Film->create({
11     Title       => 'This Is Spinal Tap',
12     Director    => 'Rob Reiner',
13     Rating      => 'R',
14 });
15
16 {
17     my $film1 = Film->retrieve( "This Is Spinal Tap" );
18     my $film2 = Film->retrieve( "This Is Spinal Tap" );
19
20     $film1->Director("Marty DiBergi");
21     is $film2->Director, "Marty DiBergi", 'retrieve returns the same object';
22
23     $film1->discard_changes;
24 }
25
26 {
27     Film->nocache(1);
28
29     my $film1 = Film->retrieve( "This Is Spinal Tap" );
30     my $film2 = Film->retrieve( "This Is Spinal Tap" );
31
32     $film1->Director("Marty DiBergi");
33     is $film2->Director, "Rob Reiner",
34        'caching turned off';
35
36     $film1->discard_changes;
37 }
38
39 {
40     Film->nocache(0);
41
42     my $film1 = Film->retrieve( "This Is Spinal Tap" );
43     my $film2 = Film->retrieve( "This Is Spinal Tap" );
44
45     $film1->Director("Marty DiBergi");
46     is $film2->Director, "Marty DiBergi",
47        'caching back on';
48
49     $film1->discard_changes;
50 }
51
52
53 {
54     Film->nocache(1);
55
56     local $Class::DBI::Weaken_Is_Available = 0;
57
58     my $film1 = Film->retrieve( "This Is Spinal Tap" );
59     my $film2 = Film->retrieve( "This Is Spinal Tap" );
60
61     $film1->Director("Marty DiBergi");
62     is $film2->Director, "Rob Reiner",
63        'CDBI::Weaken_Is_Available turns off all caching';
64
65     $film1->discard_changes;
66 }
67
68 done_testing;