File Coverage

inc/Test/Mock/LWP/Conditional.pm
Criterion Covered Total %
statement 35 36 97.2
branch 4 6 66.6
condition 4 8 50.0
subroutine 12 12 100.0
pod 2 2 100.0
total 57 64 89.0


line stmt bran cond sub pod time code
1             #line 1
2             package Test::Mock::LWP::Conditional;
3 5     5   4139  
  5         21  
  5         198  
4 5     5   29 use 5.008001;
  5         13  
  5         143  
5 5     5   33 use strict;
  5         11  
  5         168  
6 5     5   29 use warnings;
  5         10  
  5         130  
7 5     5   28 use LWP::UserAgent;
  5         10  
  5         639  
8 5     5   4725 use Scalar::Util qw(blessed refaddr);
  5         9240  
  5         31  
9 5     5   5446 use Sub::Install qw(install_sub);
  5         14223  
  5         404  
10 5     5   5295 use Class::Method::Modifiers qw(install_modifier);
  5         2266  
  5         2696  
11             use Test::Mock::LWP::Conditional::Stubs;
12              
13             our $VERSION = '0.03';
14             $VERSION = eval $VERSION;
15              
16             our $Stubs = +{ __GLOBAL__ => +{} };
17              
18 23     23   61 sub _set_stub {
19             my ($key, $uri, $res) = @_;
20 23   50     96  
21 23   66     254 $Stubs->{$key} ||= +{};
22             $Stubs->{$key}->{$uri} ||= Test::Mock::LWP::Conditional::Stubs->new;
23 23         329  
24             $Stubs->{$key}->{$uri}->add($res);
25             }
26              
27 23     23   177 sub _get_stub {
28             my ($key, $uri) = @_;
29 23 50 33     545  
    100          
30 0         0 if (exists $Stubs->{$key} && exists $Stubs->{$key}->{$uri}) {
31             return $Stubs->{$key}->{$uri};
32             }
33 22         239 elsif (exists $Stubs->{__GLOBAL__}->{$uri}) {
34             return $Stubs->{__GLOBAL__}->{$uri};
35             }
36             }
37              
38 23     23 1 6117 sub stub_request {
39 23 50       111 my ($self, $uri, $res) = @_;
40 23         87 my $key = blessed($self) ? refaddr($self) : '__GLOBAL__';
41             _set_stub($key, $uri, $res);
42             }
43              
44 19     19 1 1651 sub reset_all {
45             $Stubs = +{ __GLOBAL__ => +{} };
46             }
47              
48             { # LWP::UserAgent injection
49             install_modifier('LWP::UserAgent', 'around', 'simple_request', sub {
50             my $orig = shift;
51             my ($self, $req, @rest) = @_;
52              
53             my $stub = _get_stub(refaddr($self), $req->uri);
54             return $stub ? $stub->execute($req) : $orig->(@_);
55             });
56              
57             install_sub({
58             code => __PACKAGE__->can('stub_request'),
59             into => 'LWP::UserAgent',
60             as => 'stub_request',
61             });
62             }
63              
64             1;
65              
66             #line 129