Passed
Push — master ( a7f03b...b76a97 )
by Dan
01:56
created

MockWithExpectations::createMockWithExpectations()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 3
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Nopolabs\Test;
5
6
use PHPUnit_Framework_MockObject_MockObject;
7
8
class MockWithExpectations
9
{
10
    /** @var ExpectationsFactory */
11
    private $expectationsFactory;
12
13
    /** @var MockFactory */
14
    private $mockFactory;
15
16
    public function __construct(
17
        ExpectationsFactory $expectationsFactory,
18
        MockFactory $mockFactory)
19
    {
20
        $this->expectationsFactory = $expectationsFactory;
21
        $this->mockFactory = $mockFactory;
22
    }
23
24
    public function createMockWithExpectations(
25
        string $className,
26
        array $expects = [],
27
        array $constructorArgs = null) : PHPUnit_Framework_MockObject_MockObject
28
    {
29
        $expectations = $this->expectationsFactory->createExpectations($expects);
30
        $expectedMethods = $expectations->getExpectedMethods();
31
        $mock = $this->mockFactory->newPartialMock($className, $expectedMethods, $constructorArgs);
32
        $expectations->set($mock);
33
34
        return $mock;
35
    }
36
37
    public function addExpectation(
38
        PHPUnit_Framework_MockObject_MockObject $mock,
39
        array $expectation) : PHPUnit_Framework_MockObject_MockObject
40
    {
41
        $this->addExpectations($mock, [$expectation]);
42
43
        return $mock;
44
    }
45
46
    public function addExpectations(
47
        PHPUnit_Framework_MockObject_MockObject $mock,
48
        array $expectations) : PHPUnit_Framework_MockObject_MockObject
49
    {
50
        $this->expectationsFactory
51
            ->createExpectations($expectations)
52
            ->set($mock);
53
54
        return $mock;
55
    }
56
}
57