Fix the DESTROY/discard_changes() infinite recursion at the DBIC level.
[dbsrgits/DBIx-Class.git] / t / cdbi-t / object_cache.t
CommitLineData
592cd0b1 1use strict;
2use Test::More;
3$| = 1;
4
5BEGIN {
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
15INIT {
16 use lib 't/testlib';
17 use Film;
18}
19
20ok +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}