From: Matt S Trout Date: Tue, 2 Aug 2005 12:33:59 +0000 (+0000) Subject: Oh yes. and the might_have test script. because that would help. X-Git-Tag: v0.03001~95 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=e76caa300644cbf5a92224f335e7a1eaee0e5f4c;p=dbsrgits%2FDBIx-Class.git Oh yes. and the might_have test script. because that would help. --- diff --git a/t/cdbi-t/14-might_have.t b/t/cdbi-t/14-might_have.t new file mode 100644 index 0000000..edce8a3 --- /dev/null +++ b/t/cdbi-t/14-might_have.t @@ -0,0 +1,65 @@ +use strict; +use Test::More; + +BEGIN { + eval "use DBD::SQLite"; + plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 18); +} + +use lib 't/testlib'; +use Film; +use Blurb; + +is(Blurb->primary_column, "title", "Primary key of Blurb = title"); +is_deeply [ Blurb->columns('Essential') ], [ Blurb->primary_column ], "Essential = Primary"; + +eval { Blurb->retrieve(10) }; +is $@, "", "No problem retrieving non-existent Blurb"; + +Film->might_have(info => Blurb => qw/blurb/); + +Film->create_test_film; + +{ + ok my $bt = Film->retrieve('Bad Taste'), "Get Film"; + isa_ok $bt, "Film"; + is $bt->info, undef, "No blurb yet"; + # bug where we couldn't write a class with a might_have that didn't_have + $bt->rating(16); + eval { $bt->update }; + is $@, '', "No problems updating when don't have"; + is $bt->rating, 16, "Updated OK"; + + is $bt->blurb, undef, "Bad taste has no blurb"; + $bt->blurb("Wibble bar"); + $bt->update; + is $bt->blurb, "Wibble bar", "And we can write the info"; +} + +{ + my $bt = Film->retrieve('Bad Taste'); + my $info = $bt->info; + isa_ok $info, 'Blurb'; + + is $bt->blurb, $info->blurb, "Blurb is the same as fetching the long way"; + ok $bt->blurb("New blurb"), "We can set the blurb"; + $bt->update; + is $bt->blurb, $info->blurb, "Blurb has been set"; + + $bt->rating(18); + eval { $bt->update }; + is $@, '', "No problems updating when do have"; + is $bt->rating, 18, "Updated OK"; + + # cascade delete? + { + my $blurb = Blurb->retrieve('Bad Taste'); + isa_ok $blurb => "Blurb"; + $bt->delete; + $blurb = Blurb->retrieve('Bad Taste'); + is $blurb, undef, "Blurb has gone"; + } + +} + +