Completed
Push — master ( 7ee214...32fd8d )
by Alberto
19s
created

MockeryMockingStrategy::doDecorateWithMethod()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 2
nop 2
dl 0
loc 11
ccs 7
cts 7
cp 1
crap 2
rs 9.4285
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Moka\Plugin\Mockery;
5
6
use Mockery;
7
use Mockery\MockInterface;
8
use Moka\Exception\MissingDependencyException;
9
use Moka\Strategy\AbstractMockingStrategy;
10
use Moka\Stub\MethodStub;
11
12
/**
13
 * Class MockeryMockingStrategy
14
 * @package Moka\Strategy
15
 */
16
class MockeryMockingStrategy extends AbstractMockingStrategy
17
{
18
    const CLASS_NAME = Mockery::class;
19
    const PACKAGE_NAME = 'mockery/mockery';
20
21
    /**
22
     * MockeryMockingStrategy constructor.
23
     *
24
     * @throws MissingDependencyException
25
     */
26 2
    public function __construct()
27
    {
28 2
        self::checkDependencies(self::CLASS_NAME, self::PACKAGE_NAME);
29
30 2
        $this->setMockType(MockInterface::class);
31
    }
32
33
    /**
34
     * @param string $fqcn
35
     * @return MockInterface
36
     */
37 26
    protected function doBuild(string $fqcn)
38
    {
39 26
        return Mockery::mock($fqcn);
40
    }
41
42
    /**
43
     * @param MockInterface $mock
44
     * @param MethodStub $stub
45
     * @return void
46
     */
47 25
    protected function doDecorateWithMethod($mock, MethodStub $stub)
48
    {
49 25
        $methodName = $stub->getName();
50 25
        $methodValue = $stub->getValue();
51
52
        /** @noinspection PhpMethodParametersCountMismatchInspection */
53 25
        $partial = $mock->shouldReceive($methodName)->zeroOrMoreTimes();
54 25
        $methodValue instanceof \Throwable
55 25
            ? $partial->andThrow($methodValue)
56 25
            : $partial->andReturn($methodValue);
57
    }
58
59
    /**
60
     * @param MockInterface $mock
61
     * @return MockInterface
62
     */
63 15
    protected function doGet($mock)
64
    {
65 15
        return $mock;
66
    }
67
}
68