File Coverage

blib/lib/DDG/Test/Goodie.pm
Criterion Covered Total %
statement 44 49 89.8
branch 3 8 37.5
condition n/a
subroutine 13 13 100.0
pod n/a
total 60 70 85.7


line stmt bran cond sub pod time code
1             package DDG::Test::Goodie;
2             our $AUTHORITY = 'cpan:DDG';
3             # ABSTRACT: Adds keywords to easily test Goodie plugins.
4             $DDG::Test::Goodie::VERSION = '1018';
5 4     7   212081 use strict;
  4         42  
  4         135  
6 4     4   27 use warnings;
  4         8  
  4         139  
7 4     4   26 use Carp;
  4         8  
  4         242  
8 4     4   27 use Test::More;
  4         8  
  4         29  
9 4     4   2959 use Test::Deep;
  4         35793  
  4         28  
10 4     4   2855 use DDG::Test::Block;
  4         16  
  4         22  
11 4     4   1197 use DDG::ZeroClickInfo;
  4         15  
  4         153  
12 4     4   33 use Package::Stash;
  4         11  
  4         1746  
13              
14             binmode STDOUT, ':utf8';
15             binmode Test::More->builder->output, ':utf8';
16             binmode Test::More->builder->failure_output, ':utf8';
17              
18              
19             sub import {
20 4     4   46 my ( $class, %params ) = @_;
21 4         11 my $target = caller;
22 4         48 my $stash = Package::Stash->new($target);
23              
24              
25 4         11 my %zci_params;
26              
27             $stash->add_symbol('&test_zci', sub {
28 8     8   13001 my $answer = shift;
29             ref $_[0] eq 'HASH' ?
30 8 50       303 DDG::ZeroClickInfo->new(%zci_params, %{$_[0]}, answer => $answer ) :
  0         0  
31             DDG::ZeroClickInfo->new(%zci_params, @_, answer => $answer )
32 4         77 });
33              
34              
35             $stash->add_symbol('&zci', sub {
36 2 50   2   173 if (ref $_[0] eq 'HASH') {
37 0         0 for (keys %{$_[0]}) {
  0         0  
38 0         0 $zci_params{$_} = $_[0]->{$_};
39             }
40             } else {
41 2         9 while (@_) {
42 2         5 my $key = shift;
43 2         5 my $value = shift;
44 2         10 $zci_params{$key} = $value;
45             }
46             }
47 4         33 });
48              
49              
50             $stash->add_symbol('&ddg_goodie_test', sub { block_test(sub {
51 8     8   28 my ($query, $answer, $zci) = @_;
52             subtest "Query: $query" => sub {
53 8 50       9522 if ($answer) {
54 8         55 $zci->{caller} = $answer->caller; # TODO: Review all this cheating; seriously.
55 8         48 cmp_deeply($answer,$zci,'Deep: full ZCI object');
56             } else {
57 0 0         fail('Expected result but dont get one on '.$query) unless defined $answer;
58             }
59 8         102 };
60 6     6   142 },@_)
61 4         155 });
62              
63             }
64              
65             1;
66              
67             __END__