Sponsoring The Perl Toolchain Summit 2025: Help make this important event another success Learn more

use strict;
use lib 't/lib';
BEGIN {
eval "use DBIx::Class";
plan skip_all => 'DBIX::Class required' if $@;
plan tests => 12;
}
use_ok( 'BookDB::Form::User');
use_ok( 'BookDB::Schema::DB');
use_ok( 'BookDB::Form::BookWithOwner' );
my $schema = BookDB::Schema::DB->connect('dbi:SQLite:t/db/book.db');
ok($schema, 'get db schema');
my $user = $schema->resultset('User')->find( 1 );
my $form;
my $options;
$form = BookDB::Form::User->new( item => $user );
ok( $form, 'User form created' );
$options = $form->field( 'country' )->options;
is( @$options, 12, 'Options loaded from the model' );
$form = BookDB::Form::User->new( schema => $schema, source_name => 'User' );
ok( $form, 'User form created' );
$options = $form->field( 'country' )->options;
is( @$options, 12, 'Options loaded from the model - simple' );
#warn Dumper( $options ); use Data::Dumper;
$form = BookDB::Form::BookWithOwner->new( schema => $schema, source_name => 'Book' );
ok( $form, 'Book with Owner form created' );
$options = $form->field( 'owner' )->field( 'country' )->options;
is( @$options, 12, 'Options loaded from the model - recursive' );
my $book = $schema->resultset('Book')->find(1);
$form = BookDB::Form::BookWithOwner->new( item => $book );
ok( $form, 'Book with Owner form created' );
$options = $form->field( 'owner' )->field( 'country' )->options;
is( $form->field( 'owner' )->field( 'country' )->value, 'GB', 'Select value loaded in a related record');