File Coverage

blib/lib/Data/RuledCluster/Strategy/Formatted.pm
Criterion Covered Total %
statement 26 27 96.3
branch 5 6 83.3
condition n/a
subroutine 6 6 100.0
pod 0 1 0.0
total 37 40 92.5


line stmt bran cond sub pod time code
1             package Data::RuledCluster::Strategy::Formatted;
2 1     1   569 use strict;
  1         2  
  1         24  
3 1     1   4 use warnings;
  1         2  
  1         22  
4 1     1   338 use parent 'Data::RuledCluster::Strategy';
  1         270  
  1         5  
5 1     1   39 use Data::Util qw(is_number neat);
  1         2  
  1         34  
6 1     1   5 use Carp ();
  1         1  
  1         154  
7              
8             sub resolve {
9 8     8 0 19 my ( $class, $resolver, $node_or_cluster, $args ) = @_;
10              
11 8         22 my @keys = $class->keys_from_args($args);
12 8         10 my $key = shift @keys;
13              
14 8 50       22 unless ( is_number($key) ) {
15 0         0 Carp::croak(
16             sprintf('args has not key field or no number value (key: %s)', neat($key))
17             );
18             }
19              
20             my $node_format = $args->{node_format}
21 8 100       94 or Carp::croak('node_format settings must be required');
22              
23 7         29 my @nodes = $resolver->clusters($node_or_cluster);
24 7         23 my $expected_node = sprintf($node_format, $key);
25 7 100       12 unless (grep {$_ eq $expected_node} @nodes) {
  21         41  
26 1         177 Carp::croak(sprintf('%s node is not exists', $expected_node));
27             }
28 6         22 return ($expected_node, @keys);
29             }
30              
31             1;
32              
33             __END__