File Coverage

blib/lib/SyForm/ValuesRole/Verify.pm
Criterion Covered Total %
statement 18 18 100.0
branch 8 8 100.0
condition 3 3 100.0
subroutine 3 3 100.0
pod 0 1 0.0
total 32 33 96.9


line stmt bran cond sub pod time code
1             package SyForm::ValuesRole::Verify;
2             BEGIN {
3 6     6   4058 $SyForm::ValuesRole::Verify::AUTHORITY = 'cpan:GETTY';
4             }
5             # ABSTRACT: Verification of values for the SyForm::Results
6             $SyForm::ValuesRole::Verify::VERSION = '0.103';
7 6     6   37 use Moo::Role;
  6         13  
  6         35  
8              
9             around create_results => sub {
10             my ( $orig, $self, %args ) = @_;
11             my $no_success = (exists $args{success} && !$args{success}) ? 1 : 0;
12             my $syccess_result = $self->verify_values($self);
13             for my $field ($self->syform->fields->Values) {
14             my $field_name = $field->name;
15             my @field_errors = @{$syccess_result->errors($field_name)};
16             if (scalar @field_errors > 0) {
17             if ($self->syform->field($field_name)->delete_on_invalid_result) {
18             delete $args{$field_name} if exists $args{$field_name};
19             }
20             }
21             }
22             my $validation_success = $syccess_result->success;
23             $args{success} = $no_success ? 0 : $validation_success ? 1 : 0;
24             $args{syccess_result} = $syccess_result;
25             return $self->$orig(%args);
26             };
27              
28             sub verify_values {
29 11     11 0 26 my ( $self, $values ) = @_;
30 11         20 my @fields;
31             my %params;
32 11         183 for my $field ($self->syform->fields->Values) {
33 38         218 my $name = $field->name;
34 38 100 100     187 if ($field->has_verify || $field->has_required) {
35 15 100       64 my @verify = $field->has_verify ? @{$field->verify} : ();
  3         12  
36 15 100       49 if ($field->has_required) {
37 12         38 unshift @verify, required => $field->required;
38             }
39 15         327 unshift @verify, label => $field->label;
40 15         114 push @fields, $name, \@verify;
41 15 100       37 $params{$name} = $values->get_value($name) if $values->has_value($name);
42             }
43             }
44             return $self->syform->loaded_syccess_class->new(
45 11         248 %{$self->syform->syccess},
  11         52989  
46             fields => [ @fields ],
47             )->validate( %params );
48             };
49              
50             1;
51              
52             __END__
53              
54             =pod
55              
56             =head1 NAME
57              
58             SyForm::ValuesRole::Verify - Verification of values for the SyForm::Results
59              
60             =head1 VERSION
61              
62             version 0.103
63              
64             =head1 AUTHOR
65              
66             Torsten Raudssus <torsten@raudss.us>
67              
68             =head1 COPYRIGHT AND LICENSE
69              
70             This software is copyright (c) 2014 by Torsten Raudssus.
71              
72             This is free software; you can redistribute it and/or modify it under
73             the same terms as the Perl 5 programming language system itself.
74              
75             =cut