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