File Coverage

File:blib/lib/Test/Mocha/CalledOk.pm
Coverage:100.0%

linestmtbrancondsubpodtimecode
1package Test::Mocha::CalledOk;
2# ABSTRACT: Abstract base class for verifying method calls
3# Abstract class methods required of sub-classes: 'is' and 'stringify'
4$Test::Mocha::CalledOk::VERSION = '0.61';
5
44
44
44
10386
45
851
use strict;
6
44
44
44
95
39
527
use warnings;
7
8
44
44
44
189
31
6582
use Test::Builder;
9
10my $TB = Test::Builder->new;
11
12sub test {
13    # uncoverable pod
14
358
0
297
    my ( $class, $method_call, $exp, $test_name ) = @_;
15
16
358
375
    my $calls   = $method_call->invocant->__calls;
17
358
1481
358
212
31623
300
    my $got     = grep { $method_call->satisfied_by($_) } @{$calls};
18
358
4164
    my $test_ok = $class->is( $got, $exp );
19
20
358
467
    my $exp_times = $class->stringify($exp);
21
358
552
    $test_name = "$method_call was called $exp_times" if !defined $test_name;
22
23    # Test failure report should not trace back to Mocha modules
24
358
309
    local $Test::Builder::Level = $Test::Builder::Level + 1;
25
358
484
    $TB->ok( $test_ok, $test_name );
26
27    # output diagnostics to aid with debugging
28
358
47702
    unless ( $test_ok || $TB->in_todo ) {
29
32
445
        my $call_history;
30
32
32
23
42
        if ( @{$calls} ) {
31
28
28
19
60
            $call_history .= "\n    " . $_->stringify_long foreach @{$calls};
32        }
33        else {
34
4
4
            $call_history = "\n    (No methods were called)";
35        }
36
37
32
59
        $TB->diag(<<"END");
38Error: unexpected number of calls to '$method_call'
39         got: $got time(s)
40    expected: $exp_times
41Complete method call history (most recent call last):$call_history
42END
43    }
44
358
1961
    return;
45}
46
471;