File Coverage

lib/APISchema/Validator/Result.pm
Criterion Covered Total %
statement 33 33 100.0
branch 2 2 100.0
condition 4 4 100.0
subroutine 12 12 100.0
pod 0 5 0.0
total 51 56 91.0


line stmt bran cond sub pod time code
1             package APISchema::Validator::Result;
2 3     3   25 use strict;
  3         6  
  3         103  
3 3     3   16 use warnings;
  3         5  
  3         86  
4              
5             # core
6 3     3   1748 use List::MoreUtils qw(all);
  3         36391  
  3         17  
7              
8             # cpan
9 3     3   3427 use Hash::Merge::Simple ();
  3         612  
  3         85  
10             use Class::Accessor::Lite (
11 3         23 new => 1,
12 3     3   19 );
  3         4  
13              
14             sub new_valid {
15 100     100 0 14646 my ($class, @targets) = @_;
16 100         238 return $class->new(values => { map { ($_ => [1]) } @targets });
  230         781  
17             }
18              
19             sub new_error {
20 44     44 0 6487 my ($class, $target, $err) = @_;
21 44   100     271 return $class->new(values => { ( $target // '' ) => [ undef, $err] });
22             }
23              
24 409   100 409   1723 sub _values { shift->{values} // {} }
25              
26             sub merge {
27 61     61 0 697 my ($self, $other) = @_;
28 61         149 $self->{values} = Hash::Merge::Simple::merge(
29             $self->_values,
30             $other->_values,
31             );
32 61         1915 return $self;
33             }
34              
35             sub errors {
36 88     88 0 6959 my $self = shift;
37             return +{ map {
38 98         1102 my $err = $self->_values->{$_}->[1];
39 98 100       647 $err ? ( $_ => $err ) : ();
40 88         135 } keys %{$self->_values} };
  88         169  
41             }
42              
43             sub is_valid {
44 50     50 0 4444 my $self = shift;
45 50     51   178 return all { $self->_values->{$_}->[0] } keys %{$self->_values};
  51         98  
  50         97  
46             }
47              
48             1;