File Coverage

lib/WebService/Braintree/AdvancedSearchNodes.pm
Criterion Covered Total %
statement 81 131 61.8
branch 0 4 0.0
condition 0 3 0.0
subroutine 30 49 61.2
pod 0 18 0.0
total 111 205 54.1


line stmt bran cond sub pod time code
1             {
2             package WebService::Braintree::AdvancedSearchNodes;
3             $WebService::Braintree::AdvancedSearchNodes::VERSION = '0.94';
4 20     20   345 use 5.010_001;
  20         60  
5 20     20   99 use strictures 1;
  20         113  
  20         672  
6              
7 20     20   2532 use Moose;
  20         30  
  20         95  
8             }
9              
10             {
11             package WebService::Braintree::SearchNode;
12             $WebService::Braintree::SearchNode::VERSION = '0.94';
13 20     20   109488 use 5.010_001;
  20         65  
14 20     20   98 use strictures 1;
  20         91  
  20         635  
15              
16 20     20   1674 use Moose;
  20         60  
  20         80  
17              
18             has 'searcher' => (is => 'rw');
19             has 'name' => (is => 'rw');
20              
21             has 'criteria' => (is => 'rw', default => sub {shift->default_criteria()});
22              
23             sub default_criteria {
24 0     0 0   return {};
25             }
26              
27             sub active {
28 0     0 0   my $self = shift;
29 0           return %{$self->criteria};
  0            
30             }
31              
32             sub add_node {
33 0     0 0   my ($self, $operator, $operand) = @_;
34 0           $self->criteria->{$operator} = $operand;
35 0           return $self->searcher;
36             }
37             __PACKAGE__->meta->make_immutable;
38             1;
39             }
40              
41             {
42             package WebService::Braintree::IsNode;
43             $WebService::Braintree::IsNode::VERSION = '0.94';
44 20     20   109441 use 5.010_001;
  20         70  
45 20     20   99 use strictures 1;
  20         82  
  20         655  
46              
47 20     20   1578 use Moose;
  20         36  
  20         80  
48             extends ("WebService::Braintree::SearchNode");
49              
50             sub is {
51 0     0 0   my ($self, $operand) = @_;
52 0           return $self->add_node("is", $operand);
53             }
54             __PACKAGE__->meta->make_immutable;
55             1;
56             }
57              
58             {
59             package WebService::Braintree::EqualityNode;
60             $WebService::Braintree::EqualityNode::VERSION = '0.94';
61 20     20   108022 use 5.010_001;
  20         64  
62 20     20   97 use strictures 1;
  20         78  
  20         616  
63              
64 20     20   1513 use Moose;
  20         31  
  20         77  
65             extends ("WebService::Braintree::IsNode");
66              
67             sub is_not {
68 0     0 0   my ($self, $operand) = @_;
69 0           return $self->add_node("is_not", $operand);
70             }
71             __PACKAGE__->meta->make_immutable;
72             1;
73             }
74              
75             {
76             package WebService::Braintree::KeyValueNode;
77             $WebService::Braintree::KeyValueNode::VERSION = '0.94';
78 20     20   107109 use 5.010_001;
  20         62  
79 20     20   93 use strictures 1;
  20         86  
  20         652  
80              
81 20     20   1580 use Moose;
  20         34  
  20         72  
82             extends ("WebService::Braintree::SearchNode");
83              
84             sub default_criteria {
85 0     0 0   return "";
86             }
87              
88             sub active {
89 0     0 0   my $self = shift;
90 0           return $self->criteria;
91             }
92              
93             sub is {
94 0     0 0   my ($self, $operand) = @_;
95 0           $self->criteria($operand);
96 0           return $self->searcher;
97             }
98             __PACKAGE__->meta->make_immutable;
99             1;
100             }
101              
102             {
103             package WebService::Braintree::PartialMatchNode;
104             $WebService::Braintree::PartialMatchNode::VERSION = '0.94';
105 20     20   107858 use 5.010_001;
  20         65  
106 20     20   94 use strictures 1;
  20         91  
  20         664  
107              
108 20     20   1513 use Moose;
  20         51  
  20         96  
109             extends ("WebService::Braintree::EqualityNode");
110              
111             sub starts_with {
112 0     0 0   my ($self, $operand) = @_;
113 0           return $self->add_node("starts_with", $operand);
114             }
115              
116             sub ends_with {
117 0     0 0   my ($self, $operand) = @_;
118 0           return $self->add_node("ends_with", $operand);
119             }
120             __PACKAGE__->meta->make_immutable;
121             1;
122             }
123              
124             {
125             package WebService::Braintree::TextNode;
126             $WebService::Braintree::TextNode::VERSION = '0.94';
127 20     20   107425 use 5.010_001;
  20         68  
128 20     20   94 use strictures 1;
  20         86  
  20         628  
129              
130 20     20   1646 use Moose;
  20         41  
  20         70  
131             extends ("WebService::Braintree::PartialMatchNode");
132              
133             sub contains {
134 0     0 0   my ($self, $operand) = @_;
135 0           return $self->add_node("contains", $operand);
136             }
137             __PACKAGE__->meta->make_immutable;
138             1;
139             }
140              
141             {
142             package WebService::Braintree::RangeNode;
143             $WebService::Braintree::RangeNode::VERSION = '0.94';
144 20     20   107768 use 5.010_001;
  20         69  
145 20     20   94 use strictures 1;
  20         89  
  20         727  
146              
147 20     20   1552 use Moose;
  20         38  
  20         72  
148             extends ("WebService::Braintree::EqualityNode");
149              
150 20     20   107320 use overload ( '>=' => 'min', '<=' => 'max');
  20         66  
  20         145  
151              
152             sub min {
153 0     0 0   my ($self, $operand) = @_;
154 0           return $self->add_node("min", $operand);
155             }
156              
157             sub max {
158 0     0 0   my ($self, $operand) = @_;
159 0           return $self->add_node("max", $operand);
160             }
161              
162             sub between {
163 0     0 0   my ($self, $min, $max) = @_;
164 0           $self->max($max);
165 0           $self->min($min);
166             }
167             __PACKAGE__->meta->make_immutable;
168             1;
169             }
170              
171             {
172             package WebService::Braintree::MultipleValuesNode;
173             $WebService::Braintree::MultipleValuesNode::VERSION = '0.94';
174 20     20   4227 use 5.010_001;
  20         83  
175 20     20   93 use strictures 1;
  20         97  
  20         640  
176              
177 20     20   1586 use Carp;
  20         39  
  20         1191  
178 20     20   101 use Moose;
  20         34  
  20         80  
179 20     20   105522 use WebService::Braintree::Util qw(difference_arrays is_arrayref);
  20         71  
  20         6387  
180             extends ("WebService::Braintree::SearchNode");
181              
182             has 'allowed_values' => (is => 'rw');
183              
184             sub default_criteria {
185 0     0 0   return [];
186             }
187              
188             sub active {
189 0     0 0   my $self = shift;
190 0           return @{$self->criteria};
  0            
191             }
192              
193             sub is {
194 0     0 0   shift->in(@_);
195             }
196              
197             sub _args_to_array {
198 0     0     my $self = shift;
199 0           my @args;
200 0 0         if (is_arrayref($_[0])) {
201 0           @args = @{$_[0]};
  0            
202             } else {
203 0           @args = @_;
204             }
205 0           return @args;
206             }
207              
208             sub in {
209 0     0 0   my $self = shift;
210 0           my @values = $self->_args_to_array(@_);
211              
212 0           my $bad_values = difference_arrays(\@values, $self->allowed_values);
213              
214 0 0 0       if (@$bad_values && $self->allowed_values) {
215 0           croak "Invalid Argument(s) for " . $self->name . ": " . join(", ", @$bad_values);
216             }
217              
218 0           @{$self->criteria} = @values;
  0            
219 0           return $self->searcher;
220             }
221             __PACKAGE__->meta->make_immutable;
222             1;
223             }