use strict;
use warnings;
use Test::More import => ['!pass'];
use Test::Exception;
use FindBin;
BEGIN {
eval { require DBD::SQLite };
if ($@) {
plan skip_all => 'DBD::SQLite is required to run these tests';
}
else {
plan tests => 16;
}
use_ok 'ORMesque';
}
#diag 'testing objects';
my $db = ORMesque->new('dbi:SQLite:' . "$FindBin::Bin/001_database.db");
ok $db, 'database object received';
ok $db->cd, 'cd table object exists';
ok $db->artist, 'artist table object exists';
ok $db->playlist, 'playlist table object exists';
ok $db->track, 'track table object exists';
ok $db->playlist_track, 'playlist_track table object exists';
#diag 'delete everything';
ok $db->cd->delete_all, 'removed any existing data from cd table';
ok $db->artist->delete_all, 'removed any existing data from artist table';
ok $db->playlist->delete_all, 'removed any existing data from playlist table';
ok $db->track->delete_all, 'removed any existing data from track table';
ok $db->playlist_track->delete_all, 'removed any existing data from playlist_track table';
#diag 'setup database data';
my (
$cd,
$artist,
$playlist,
$track,
$playlist_track
)
=
(
$db->cd,
$db->artist,
$db->playlist,
$db->track,
$db->playlist_track
);
$artist->create({ name => 'Micheal Jackson' });
$artist->return;
$cd->create({ artist => $artist->id(), name => $_ })
for (
'Invincible',
'Blood On The Dance Floor',
'HIStory',
'Dangerous',
'Bad',
'Thriller',
'Off The Wall'
);
my $artist_count = $artist->read->count();
my $cd_count = $cd->read({ artist => $artist->id() })->count();
ok 1 == $artist_count, '1 artist';
ok 7 == $cd_count, '7 albums';
#diag 'test select specific columns';
ok $cd->select('name'), 'select specific column syntax';
$cd->read; my $value = 0; for (values %{ $cd->current }) { $value++ if $_; }
ok $value == 1, 'select specific column works';
# warn to_dumper $user->return;