Skip to content

Instantly share code, notes, and snippets.

/arrays.diff Secret

Created March 17, 2016 20:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/c06089084c9707036c9d to your computer and use it in GitHub Desktop.
Save anonymous/c06089084c9707036c9d to your computer and use it in GitHub Desktop.
diff --git a/lib/Mojolicious/Validator/Validation.pm b/lib/Mojolicious/Validator/Validation.pm
index a007f9b..b46d635 100644
--- a/lib/Mojolicious/Validator/Validation.pm
+++ b/lib/Mojolicious/Validator/Validation.pm
@@ -72,8 +72,8 @@ sub optional {
for my $cb (map { $self->validator->filters->{$_} } @filters) {
@input = map { $self->$cb($name, $_) } @input;
}
- $self->output->{$name} = @input > 1 ? \@input : $input[0]
- unless grep { !length } @input;
+ $self->output->{$name} = ref $input eq 'ARRAY' ? \@input : $input[0]
+ if @input && !grep { !length } @input;
return $self->topic($name);
}
diff --git a/t/mojolicious/validation_lite_app.t b/t/mojolicious/validation_lite_app.t
index 8ef9830..cd1a3d7 100644
--- a/t/mojolicious/validation_lite_app.t
+++ b/t/mojolicious/validation_lite_app.t
@@ -63,6 +63,13 @@ ok !$validation->required('does_not_exist')->is_valid, 'not valid';
is_deeply $validation->output, {foo => 'bar', baz => 'yada'}, 'right result';
ok $validation->has_error, 'has error';
is_deeply $validation->error('does_not_exist'), ['required'], 'right error';
+$validation = $t->app->validation->input({foo => [], bar => ['a', 'b']});
+ok !$validation->optional('foo')->is_valid, 'not valid';
+is_deeply $validation->output, {}, 'right result';
+ok $validation->optional('bar')->is_valid, 'valid';
+is_deeply $validation->output, {bar => ['a', 'b']}, 'right result';
+ok !$validation->in('c')->is_valid, 'not valid';
+is_deeply $validation->output, {}, 'right result';
# Equal to
$validation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment