use strict;
use warnings;
use Test::More 'no_plan';
use lib qw( t/TestReference/lib );
use TestReference::Model::JDBI;

my $model = TestReference::Model::JDBI->new;

if ( -f $model->database ) {
  $model->disconnect;
  unlink $model->database;
}

eval { $model->setup_database };
ok !$@, 'setup database successfully';
exit if $@;

$model->trace(0);

{ # prepare data
  my $author = $model->record('Author');
  my $author_id = $author->create( name => 'me' );

  my $book1 = $model->record('Book');
     $book1->create( name => 'A book', author => $author_id );
  my $book2 = $model->record('Book');
     $book2->create( name => 'Another book', author => $author_id );
}

{ # now test them
  my $author = $model->record('Author');
     $author->load_by_cols( name => 'me' );
  ok $author->id;

  my $books = $author->books;
     $books->unlimit;
  ok $books->isa('Jifty::DBI::Collection');
  ok $books->count == 2;
  ok $books->first->name eq 'A book';
}

{
  my $book = $model->record('Book');
     $book->load_by_cols( name => 'A book' );
  ok $book->id;

  my $author = $book->author;
  ok $author->isa('Jifty::DBI::Record');
  ok $author->name eq 'me';
}

END { # cleanup
  $model->disconnect;
  unlink $model->database;
}
