#
# DB::Ent test suite
# Copyright (C) 2001-2003 Erick Calder
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
use warnings;
use strict;
use Test::Simple tests => 14;
use vars qw/$ef $ok $ar $al/;
use DB::Ent;
ok(1, "use DB::Ent");
$ef = DB::Ent->new(dbn => "test", debug => $ENV{DEBUG});
ok(defined $ef && $ef->isa('DB::Ent')
, "entity factory instantiated"
) || die $!;
my $usr = (getpwuid($>))[0];
ok($ef->cs() eq "mysql://$usr\@localhost/test",
"connection string verified"
);
$ok = $ef->init(DROP => 1);
ok($ok, "schema created") || die $!;
$ar = $ef->mk(artist => "Björk");
ok(defined $ar && $ar->isa("DB::Ent")
, "entity created"
);
my $url = "http://www.bjork.com";
$ok = $ar->attr(www => $url);
ok($ok, "attribute set");
ok($url eq $ar->attrs("www"), "attribute verified");
$ar->rmattr();
ok(!$ar->attrs("www"), "attribute removed");
$al = $ar->mksub(album => "Homogenic");
ok(defined $al && $al->isa("DB::Ent")
, "sub-entity created"
);
$al = $ef->mk(album => "Post");
$ok = $al->rel($ar);
ok(defined $al && $ok, "relative established");
my @rels = $ar->rels();
$ok = $rels[0]->{nm} eq "Homogenic" && $rels[1]->{nm} eq "Post";
ok($ok, "relatives verified");
my $ent = $ef->ent("Post");
ok($ent->{nm} eq "Post", "entity retrieved");
$ok = $al->rm();
ok($ef->ent("Post") == 0, "entity removed");
ok(1, "done");