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

MockeryMockingStrategy   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 52
ccs 14
cts 14
cp 1
rs 10
c 0
b 0
f 0
wmc 5
lcom 0
cbo 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A doBuild() 0 4 1
A doGet() 0 4 1
A doDecorateWithMethod() 0 11 2
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