The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
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 => 13;
    }

    use_ok 'ORMesque';
}

my $db = ORMesque->new('dbi:SQLite:' . "$FindBin::Bin/001_database.db");

#diag 'testing objects';

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'
    );

$cd->read({ artist => $artist->id() });
$artist->read({ id => $artist->id() });

my $resultset = {};

eval{ $resultset = $cd->join() };
ok $@, 'join requires two or more ORMesque objects';

#$db->{dbh}->{dbh}->trace(1);
#$cd->read;
#warn to_dumper [$cd->list];

#$resultset = $cd->join({ columns => { cd_name => 'cd' } }, $artist, { persist => 1, columns => { artist_name => 'artist' } });
#warn to_dumper $resultset;

#$resultset = $cd->join({ columns => { cd_name => 'cd' } }, $artist, { persist => 1, columns => { artist_name => 'artist' } });
#warn to_dumper $resultset;