Completed
Push — EZP-26057-permission-api ( b3fc4f )
by
unknown
25:48
created

BaseTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 106
Duplicated Lines 26.42 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 28
loc 106
rs 10
c 1
b 0
f 0
wmc 6
lcom 1
cbo 2

6 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 5 1
A getPartiallyMockedViewProvider() 0 13 1
A getRepositoryMock() 0 15 1
A getLocationMock() 0 7 1
A getContentInfoMock() 0 7 1
B getPermissionServiceMock() 28 28 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
/**
4
 * File containing the BaseTest class.
5
 *
6
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
7
 * @license For full copyright and license information view LICENSE file distributed with this source code.
8
 *
9
 * @version //autogentag//
10
 */
11
namespace eZ\Publish\Core\MVC\Symfony\Matcher\Tests\ContentBased;
12
13
use PHPUnit_Framework_TestCase;
14
15
abstract class BaseTest extends PHPUnit_Framework_TestCase
16
{
17
    /**
18
     * @var \PHPUnit_Framework_MockObject_MockObject
19
     */
20
    protected $repositoryMock;
21
22
    protected function setUp()
23
    {
24
        parent::setUp();
25
        $this->repositoryMock = $this->getRepositoryMock();
26
    }
27
28
    /**
29
     * @param array $matchingConfig
30
     *
31
     * @return \PHPUnit_Framework_MockObject_MockObject
32
     */
33
    protected function getPartiallyMockedViewProvider(array $matchingConfig = array())
34
    {
35
        return $this
36
            ->getMockBuilder('eZ\\Publish\\Core\\MVC\\Symfony\\View\\Provider\\Location\\Configured')
37
            ->setConstructorArgs(
38
                array(
39
                    $this->repositoryMock,
40
                    $matchingConfig,
41
                )
42
            )
43
            ->setMethods(array('getMatcher'))
44
            ->getMock();
45
    }
46
47
    /**
48
     * @return \PHPUnit_Framework_MockObject_MockObject
49
     */
50
    protected function getRepositoryMock()
51
    {
52
        $repositoryClass = 'eZ\\Publish\\Core\\Repository\\Repository';
53
54
        return $this
55
            ->getMockBuilder($repositoryClass)
56
            ->disableOriginalConstructor()
57
            ->setMethods(
58
                array_diff(
59
                    get_class_methods($repositoryClass),
60
                    array('sudo')
61
                )
62
            )
63
            ->getMock();
64
    }
65
66
    /**
67
     * @param array $properties
68
     *
69
     * @return \PHPUnit_Framework_MockObject_MockObject
70
     */
71
    protected function getLocationMock(array $properties = array())
72
    {
73
        return $this
74
            ->getMockBuilder('eZ\\Publish\\API\\Repository\\Values\\Content\\Location')
75
            ->setConstructorArgs(array($properties))
76
            ->getMockForAbstractClass();
77
    }
78
79
    /**
80
     * @param array $properties
81
     *
82
     * @return \PHPUnit_Framework_MockObject_MockObject
83
     */
84
    protected function getContentInfoMock(array $properties = array())
85
    {
86
        return $this->
87
            getMockBuilder('eZ\\Publish\\API\\Repository\\Values\\Content\\ContentInfo')
88
            ->setConstructorArgs(array($properties))
89
            ->getMockForAbstractClass();
90
    }
91
92 View Code Duplication
    protected function getPermissionServiceMock($repository)
93
    {
94
        return $this
95
            ->getMockBuilder('\eZ\Publish\Core\Repository\PermissionService')
96
            ->setMethods(null)
97
            ->setConstructorArgs(
98
                [
99
                    $repository,
100
                    $this
101
                        ->getMockBuilder('eZ\Publish\API\Repository\UserService')
102
                        ->getMock(),
103
                    $this
104
                        ->getMockBuilder('eZ\Publish\Core\Repository\Helper\RoleDomainMapper')
105
                        ->disableOriginalConstructor()
106
                        ->getMock(),
107
                    $this
108
                        ->getMockBuilder('eZ\Publish\Core\Repository\Helper\LimitationService')
109
                        ->getMock(),
110
                    $this
111
                        ->getMockBuilder('eZ\Publish\SPI\Persistence\User\Handler')
112
                        ->getMock(),
113
                    $this
114
                        ->getMockBuilder('eZ\Publish\API\Repository\Values\User\UserReference')
115
                        ->getMock(),
116
                ]
117
            )
118
            ->getMock();
119
    }
120
}
121