File Coverage

blib/lib/WebService/Flixster/Actor/Stub.pm
Criterion Covered Total %
statement 18 62 29.0
branch 0 20 0.0
condition n/a
subroutine 6 13 46.1
pod 2 5 40.0
total 26 100 26.0


line stmt bran cond sub pod time code
1             # $Id: Stub.pm 7373 2012-04-09 18:00:33Z chris $
2              
3             package WebService::Flixster::Actor::Stub;
4              
5 2     2   11 use strict;
  2         5  
  2         71  
6 2     2   12 use warnings;
  2         6  
  2         87  
7              
8             our $VERSION = '0.02';
9              
10 2     2   33 use base qw(WebService::Flixster::Actor);
  2         5  
  2         169  
11              
12 2     2   11 use Carp;
  2         4  
  2         244  
13             our @CARP_NOT = qw(WebService::Flixster WebService::Flixster::Actor);
14              
15 2     2   13 use WebService::Flixster::Actor;
  2         10  
  2         26  
16              
17             __PACKAGE__->mk_accessors(qw(
18             _stub_id
19             _stub_character
20             _stub_name
21             _stub_photo
22             ));
23              
24              
25             sub _new {
26 0     0     my $class = shift;
27 0           my $ws = shift;
28 0           my $data = shift;
29              
30 0           my $self = $class->SUPER::_new($ws, {'id' => $data->{'id'}}, '_defer_fetch' => 1);
31 0           bless $self, $class;
32              
33 0           $self->_stub_id($data->{'id'});
34 0 0         if (exists $data->{'character'}) { $self->_stub_character($data->{'character'}); }
  0            
35 0 0         if (exists $data->{'name'}) { $self->_stub_name($data->{'name'}); }
  0            
36 0 0         if (exists $data->{'photo'}) { $self->_stub_photo($data->{'photo'}); }
  0            
37              
38 0           if (0) { $self->_check_unparsed($data); }
39              
40 0           return $self;
41             }
42              
43             sub obj {
44 0     0 0   my $self = shift;
45 0           return WebService::Flixster::Actor->_new($self->_ws(), {'id' => $self->id()});
46             }
47              
48             sub id {
49 0     0 1   my $self = shift;
50 0           return $self->_stub_id();
51             }
52              
53             sub character {
54 0     0 0   my $self = shift;
55 0           my $nosuper = shift;
56              
57 0 0         if (defined $self->_stub_character()) {
    0          
58 0           return $self->_stub_character();
59             } elsif ($nosuper) {
60 0           return undef;
61             } else {
62 0           return $self->SUPER::character();
63             }
64             }
65              
66             sub name {
67 0     0 1   my $self = shift;
68 0           my $nosuper = shift;
69              
70 0 0         if (defined $self->_stub_name()) {
    0          
71 0           return $self->_stub_name();
72             } elsif ($nosuper) {
73 0           return undef;
74             } else {
75 0           return $self->SUPER::name();
76             }
77             }
78              
79             sub photo {
80 0     0 0   my $self = shift;
81 0           my $nosuper = shift;
82              
83 0 0         if (defined $self->_stub_photo()) {
    0          
84 0           return $self->_stub_photo();
85             } elsif ($nosuper) {
86 0           return undef;
87             } else {
88 0           return $self->SUPER::photo();
89             }
90             }
91              
92              
93             sub _check_unparsed {
94 2     2   1010 use Storable qw(dclone);
  2         4  
  2         290  
95              
96 0     0     my $self = shift;
97 0           my $d = dclone(shift);
98              
99 0           delete $d->{'id'};
100 0           delete $d->{'character'};
101 0           delete $d->{'name'};
102 0           delete $d->{'photo'};
103              
104 0 0         if (scalar keys %$d != 0) {
105 0           die "Remaining keys: " . join(", ", keys %$d);
106             }
107             }
108              
109             1;