File Coverage

blib/lib/EWS/Folder/ResultSet.pm
Criterion Covered Total %
statement 13 35 37.1
branch 0 4 0.0
condition n/a
subroutine 5 8 62.5
pod 1 2 50.0
total 19 49 38.7


line stmt bran cond sub pod time code
1             package EWS::Folder::ResultSet;
2             BEGIN {
3 1     1   23 $EWS::Folder::ResultSet::VERSION = '1.143070';
4             }
5              
6 1     1   4 use Moose;
  1         2  
  1         7  
7 1     1   6320 use MooseX::Iterator;
  1         3  
  1         37  
8              
9 1     1   644 use EWS::Folder::Item;
  1         3  
  1         277  
10              
11             has items => (
12             is => 'ro',
13             isa => 'ArrayRef[EWS::Folder::Item]',
14             required => 1,
15             );
16              
17             sub BUILDARGS {
18 0     0 1   my ($class, @rest) = @_;
19 0 0         my $params = (scalar @rest == 1 ? $rest[0] : {@rest});
20              
21             # promote hashes returned from Exchange into Item objects
22 0           my $items = [ map { EWS::Folder::Item->new($_) }
  0            
23 0           @{$params->{items}} ];
24              
25             # convert $items into a deletable HASH
26 0           my %hshItems = map { $_->{FolderId}->{Id} => $_ } @{$items};
  0            
  0            
27              
28 0           $items = [];
29 0           foreach my $item (values %hshItems) {
30 0 0         if ( exists( $hshItems{$item->{ParentFolderId}->{Id}} )) {
31             # add item to parent's SubFolders array
32 0           push @{$hshItems{$item->{ParentFolderId}->{Id}}->{items}}, $item;
  0            
33             }
34             else {
35             # item without parent in the hash means it must be kept
36 0           push @{$items}, $item;
  0            
37             }
38             }
39 0           $params->{items} = $items;
40 0           return $params;
41             }
42              
43             sub count {
44 0     0 0   my $self = shift;
45 0           return scalar @{$self->items};
  0            
46             }
47              
48             has iterator => (
49             is => 'ro',
50             isa => 'MooseX::Iterator::Array',
51             handles => [qw/
52             next
53             has_next
54             peek
55             reset
56             /],
57             lazy_build => 1,
58             );
59              
60             sub _build_iterator {
61 0     0     my $self = shift;
62 0           return MooseX::Iterator::Array->new( collection => $self->items );
63             }
64              
65             __PACKAGE__->meta->make_immutable;
66 1     1   8 no Moose;
  1         1  
  1         5  
67             1;