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