Merge 'trunk' into 'cdbicompat_integration'
[dbsrgits/DBIx-Class.git] / t / cdbi-t / 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     next;
10   }
11   eval "use DBD::SQLite";
12   plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 5);
13 }
14
15 INIT {
16     use lib 't/testlib';
17     use Film;
18 }
19
20 ok +Film->create({
21     Title       => 'This Is Spinal Tap',
22     Director    => 'Rob Reiner',
23     Rating      => 'R',
24 });
25
26 {
27     my $film1 = Film->retrieve( "This Is Spinal Tap" );
28     my $film2 = Film->retrieve( "This Is Spinal Tap" );
29
30     $film1->Director("Marty DiBergi");
31     is $film2->Director, "Marty DiBergi", 'retrieve returns the same object';
32
33     $film1->discard_changes;
34 }
35
36 {
37     Film->nocache(1);
38     
39     my $film1 = Film->retrieve( "This Is Spinal Tap" );
40     my $film2 = Film->retrieve( "This Is Spinal Tap" );
41
42     $film1->Director("Marty DiBergi");
43     is $film2->Director, "Rob Reiner",
44        'caching turned off';
45     
46     $film1->discard_changes;
47 }
48
49 {
50     Film->nocache(0);
51
52     my $film1 = Film->retrieve( "This Is Spinal Tap" );
53     my $film2 = Film->retrieve( "This Is Spinal Tap" );
54
55     $film1->Director("Marty DiBergi");
56     is $film2->Director, "Marty DiBergi",
57        'caching back on';
58
59     $film1->discard_changes;
60 }
61
62
63 {
64     Film->nocache(1);
65
66     local $Class::DBI::Weaken_Is_Available = 0;
67
68     my $film1 = Film->retrieve( "This Is Spinal Tap" );
69     my $film2 = Film->retrieve( "This Is Spinal Tap" );
70
71     $film1->Director("Marty DiBergi");
72     is $film2->Director, "Rob Reiner",
73        'CDBI::Weaken_Is_Available turns off all caching';
74
75     $film1->discard_changes;
76 }