File Coverage

blib/lib/WWW/ARDB/Result/Quest.pm
Criterion Covered Total %
statement 21 21 100.0
branch 2 4 50.0
condition 5 8 62.5
subroutine 7 7 100.0
pod 4 4 100.0
total 39 44 88.6


line stmt bran cond sub pod time code
1             package WWW::ARDB::Result::Quest;
2             our $AUTHORITY = 'cpan:GETTY';
3              
4             # ABSTRACT: Quest result object for WWW::ARDB
5              
6 6     6   121728 use Moo;
  6         5716  
  6         43  
7 6     6   3532 use Types::Standard qw( Str Int Num ArrayRef HashRef Maybe );
  6         98042  
  6         56  
8 6     6   13717 use namespace::clean;
  6         13974  
  6         58  
9              
10             our $VERSION = '0.002';
11              
12              
13             has id => (
14             is => 'ro',
15             isa => Str,
16             required => 1,
17             );
18              
19              
20             has title => (
21             is => 'ro',
22             isa => Str,
23             required => 1,
24             );
25              
26              
27             has description => (
28             is => 'ro',
29             isa => Maybe[Str],
30             default => sub { undef },
31             );
32              
33              
34             has maps => (
35             is => 'ro',
36             isa => ArrayRef,
37             default => sub { [] },
38             );
39              
40              
41             has steps => (
42             is => 'ro',
43             isa => ArrayRef,
44             default => sub { [] },
45             );
46              
47              
48             has trader => (
49             is => 'ro',
50             isa => Maybe[HashRef],
51             default => sub { undef },
52             );
53              
54              
55             has required_items => (
56             is => 'ro',
57             isa => ArrayRef,
58             default => sub { [] },
59             );
60              
61              
62             has rewards => (
63             is => 'ro',
64             isa => ArrayRef,
65             default => sub { [] },
66             );
67              
68              
69             has xp_reward => (
70             is => 'ro',
71             isa => Maybe[Num],
72             default => sub { undef },
73             );
74              
75              
76             has updated_at => (
77             is => 'ro',
78             isa => Maybe[Str],
79             default => sub { undef },
80             );
81              
82              
83             has _raw => (
84             is => 'ro',
85             isa => HashRef,
86             default => sub { {} },
87             );
88              
89             sub from_hashref {
90 12     12 1 343666 my ($class, $data) = @_;
91              
92             return $class->new(
93             id => $data->{id},
94             title => $data->{title},
95             description => $data->{description},
96             maps => $data->{maps} // [],
97             steps => $data->{steps} // [],
98             trader => $data->{trader},
99             required_items => $data->{requiredItems} // [],
100             rewards => $data->{rewards} // [],
101             xp_reward => $data->{xpReward},
102             updated_at => $data->{updatedAt},
103 12   50     365 _raw => $data,
      50        
      50        
      100        
104             );
105             }
106              
107              
108             sub trader_name {
109 2     2 1 16432 my $self = shift;
110 2 50       11 return unless $self->trader;
111 2         9 return $self->trader->{name};
112             }
113              
114              
115             sub trader_type {
116 2     2 1 8 my $self = shift;
117 2 50       11 return unless $self->trader;
118 2         13 return $self->trader->{type};
119             }
120              
121              
122             sub map_names {
123 1     1 1 3 my $self = shift;
124 1         2 return [ map { $_->{name} } @{$self->maps} ];
  2         14  
  1         6  
125             }
126              
127              
128             1;
129              
130             __END__