# t/formerrors.t # # Tests error message handling for form validation ( DW::FormErrors ). # # This program is free software; you may redistribute it and/or modify it under # the same terms as Perl itself. For a copy of the license, please reference # 'perldoc perlartistic' or 'perldoc perlgpl'. use strict; use Test::More tests => 8; BEGIN { $LJ::_T_CONFIG = 1; require "$ENV{LJHOME}/cgi-bin/ljlib.pl"; } use DW::FormErrors; note("Get all errors"); { my $errors = DW::FormErrors->new; $errors->add( "foo", ".error.foo" ); $errors->add( "bar", ".error.bar" ); $errors->add( "baz", ".error.baz" ); is_deeply( $errors->get_all, [ { key => "foo", ml_key => ".error.foo", message => '[missing string .error.foo]' }, { key => "bar", ml_key => ".error.bar", message => '[missing string .error.bar]' }, { key => "baz", ml_key => ".error.baz", message => '[missing string .error.baz]' }, ], "all errors in the order that they were added" ); }; note("Get error by key"); { my $errors = DW::FormErrors->new; $errors->add( "foo", ".error.foo" ); $errors->add( "bar", ".error.bar" ); is( $errors->get("foo")->{ml_key}, ".error.foo", "error foo by key" ); is( $errors->get("bar")->{ml_key}, ".error.bar", "error bar by key" ); } note("Multiple errors for the same key"); { my $errors = DW::FormErrors->new; $errors->add( "foo", ".error.foo1" ); $errors->add( "foo", ".error.foo2" ); my ( $foo1, $foo2 ) = $errors->get("foo"); is( $foo1->{ml_key}, ".error.foo1", "multiple errors for foo (1)" ); is( $foo2->{ml_key}, ".error.foo2", "multiple errors for foo (2)" ); is_deeply( $errors->get_all, [ { key => "foo", ml_key => ".error.foo1", message => '[missing string .error.foo1]' }, { key => "foo", ml_key => ".error.foo2", message => '[missing string .error.foo2]' } ], "all errors in the order that they were added (multiple errors for the key)" ); } note("Error ml code with argument"); { my $errors = DW::FormErrors->new; $errors->add( "foo", ".error.foo", { foo_arg => "foofoofoo" } ); is_deeply( $errors->get("foo"), { ml_key => ".error.foo", message => '[missing string .error.foo]', ml_args => { foo_arg => "foofoofoo" } }, "error foo with argument (get)" ); is_deeply( $errors->get_all, [ { key => "foo", ml_key => ".error.foo", message => '[missing string .error.foo]', ml_args => { foo_arg => "foofoofoo" } } ], "error foo with argument (get_all)" ); } 1;