/xt/form_errors.t
http://github.com/gshank/html-formhandler · Raku · 48 lines · 42 code · 6 blank · 0 comment · 4 complexity · db604b1e02f1dbcde38ce6fe74c935d7 MD5 · raw file
- use strict;
- use warnings;
- use Test::More;
- {
- package Test::Form;
- use HTML::FormHandler::Moose;
- extends 'HTML::FormHandler';
- has 'secret' => ( is => 'rw', default => 'wrong' );
- has_field 'foo';
- has_field 'bar';
- sub validate_foo {
- my ( $self, $field ) = @_;
- $field->add_error('Not a valid foo')
- if( $field->value eq 'test' );
- }
- sub validate_bar {
- my ( $self, $field ) = @_;
- $field->add_error('Not a valid bar')
- if( $field->value eq 'bad_bar' );
- }
- sub validate {
- my $self = shift;
- $self->add_form_error('Try again')
- if( $self->field('foo')->value ne $self->secret );
- }
- }
- my $form = Test::Form->new;
- ok( $form, 'form builds' );
- $form->process( params => {} );
- my $params = {
- foo => 'test',
- bar => 'bad_bar',
- };
- $form->process( secret => 'yikes', params => $params );
- ok( !$form->validated, 'form did not validate' );
- $form->process( secret => 'my_bar', params => { bar => 'my_bar', foo => 'my_foo' } );
- my @errors = $form->errors;
- is( $errors[0], 'Try again', 'form error' );
- $form->process( secret => 'my_foo', params => { bar => 'my_bar', foo => 'my_foo' } );
- ok( $form->validated, 'form validated' );
- ok( !$form->has_form_errors, 'form errors are gone' );
- done_testing;