From: Matt S Trout <mst@shadowcat.co.uk>
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";
+	}
+		
+}
+
+