Skip to content

Commit

Permalink
improved error method in Mojolicious::Validator::Validation to return…
Browse files Browse the repository at this point in the history
… field names when called without arguments
  • Loading branch information
kraih committed Jun 29, 2014
1 parent 83c8c5b commit 153e22d
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 1 deletion.
2 changes: 2 additions & 0 deletions Changes
@@ -1,5 +1,7 @@

5.11 2014-06-29
- Improved error method in Mojolicious::Validator::Validation to return
field names when called without arguments.

5.10 2014-06-28
- Added cleanup attribute to Mojo::Server::Prefork.
Expand Down
6 changes: 5 additions & 1 deletion lib/Mojolicious/Validator/Validation.pm
Expand Up @@ -44,10 +44,13 @@ sub csrf_protect {
}

sub error {
my ($self, $name) = (shift, shift);
my $self = shift;

return sort keys %{$self->{error}} unless defined(my $name = shift);
return $self->{error}{$name} unless @_;
$self->{error}{$name} = shift;
delete $self->output->{$name};

return $self;
}

Expand Down Expand Up @@ -172,6 +175,7 @@ Validate C<csrf_token> and protect from cross-site request forgery.
=head2 error
my @names = $validation->error;
my $err = $validation->error('foo');
$validation = $validation->error(foo => ['custom_check']);
Expand Down
3 changes: 3 additions & 0 deletions t/mojolicious/validation_lite_app.t
Expand Up @@ -35,6 +35,7 @@ my $t = Test::Mojo->new;

# Required and optional values
my $validation = $t->app->validation->input({foo => 'bar', baz => 'yada'});
is_deeply [$validation->error], [], 'no names';
ok $validation->required('foo')->is_valid, 'valid';
is_deeply $validation->output, {foo => 'bar'}, 'right result';
is $validation->param('foo'), 'bar', 'right value';
Expand Down Expand Up @@ -70,6 +71,7 @@ ok !$validation->optional('yada')->equal_to('foo')->is_valid, 'not valid';
is_deeply $validation->output, {foo => 'bar'}, 'right result';
ok $validation->has_error, 'has error';
is_deeply $validation->error('yada'), [qw(equal_to 1 foo)], 'right error';
is_deeply [$validation->error], [qw(baz yada)], 'right names';

# In
$validation = $t->app->validation->input(
Expand All @@ -81,6 +83,7 @@ ok !$validation->required('baz')->in(qw(yada whatever))->is_valid, 'not valid';
is_deeply $validation->output, {foo => [qw(bar whatever)]}, 'right result';
ok $validation->has_error, 'has error';
is_deeply $validation->error('baz'), [qw(in 1 yada whatever)], 'right error';
is_deeply [$validation->error], ['baz'], 'right names';

# Like
$validation = $t->app->validation->input({foo => 'bar', baz => 'yada'});
Expand Down

0 comments on commit 153e22d

Please sign in to comment.