1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
use Test::More;
use lib 't/lib';
use_ok('HTML::FormHandler::Model::DBIC');
use BookDB::Schema;
my $schema = BookDB::Schema->connect('dbi:SQLite:t/db/book.db');
{
package My::Form;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler::Model::DBIC';
has '+item_class' => ( default => 'Book' );
has_field 'title' => ( type => 'Text', required => 1 );
has_field 'author' => ( type => 'Text' );
has_field 'publisher' => ( noupdate => 1 );
sub init_value_author
{
'Pick a Better Author'
}
}
my $init_object = {
'title' => 'Fill in the title',
'author' => 'Enter an Author',
'publisher' => 'something',
};
my $form = My::Form->new( init_object => $init_object, schema => $schema );
ok( $form, 'get form');
my $title_field = $form->field('title');
is( $title_field->value, 'Fill in the title', 'get title from init_object');
my $author_field = $form->field('author');
is( $author_field->value, 'Enter an Author', 'get init value from init_value_author' );
is( $form->field('publisher')->fif, 'something', 'noupdate fif from init_obj' );
$form->processed(0); # to unset processed flag caused by fif
my $params = {
'title' => 'We Love to Test Perl Form Processors',
'author' => 'B.B. Better',
'publisher' => 'anything',
};
ok( $form->process( $params ), 'validate data' );
ok( $form->field('title')->value_changed, 'init_value ne value');
is( $form->field('publisher')->value, 'anything', 'value for noupdate field' );
is( $form->field('author')->value, 'B.B. Better', 'right value for author' );
my $values = $form->value;
ok( !exists $values->{publisher}, 'no publisher in values' );
ok( $form->update_model, 'update validated data');
my $book = $form->item;
is( $book->title, 'We Love to Test Perl Form Processors', 'title updated');
is( $book->publisher, undef, 'no publisher' );
$book->delete;
done_testing;
|