testMethodAndPropertyWithSuperfluousComment()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 20
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 20
rs 9.4285
cc 1
eloc 14
nc 1
nop 0
1
<?php
2
3
namespace MS\PHPMD\Tests\Unit\CleanCode;
4
5
use MS\PHPMD\Rule\CleanCode\SuperfluousComment;
6
use MS\PHPMD\Tests\Unit\AbstractApplyTest;
7
use PHPMD\AbstractNode;
8
9
/**
10
 * Class SuperfluousCommentTest
11
 *
12
 * @package MS\PHPMD\Tests\Unit\CleanCode
13
 */
14
class SuperfluousCommentTest extends AbstractApplyTest
15
{
16
    const CLASS_NAME = 'SuperfluousComment';
17
18
    /**
19
     * @covers MS\PHPMD\Rule\CleanCode\SuperfluousComment
20
     */
21
    public function testClassWithEmptyDocComment()
22
    {
23
        $this->assertRule($this->getClassNode(), 0);
24
    }
25
26
    /**
27
     * @covers MS\PHPMD\Rule\CleanCode\SuperfluousComment
28
     */
29
    public function testClassWithSuperfluousComment()
30
    {
31
        $this->assertRule($this->getClassNode(self::CLASS_NAME), 1);
32
    }
33
34
    /**
35
     * @covers MS\PHPMD\Rule\CleanCode\SuperfluousComment
36
     */
37
    public function testMethodAndPropertyWithSuperfluousComment()
38
    {
39
        $propertyName = '$name';
40
        $methodName = 'getName';
41
42
        $propertyNode = \Mockery::mock('PDepend\Source\ASTVisitor\ASTVisitor\ASTProperty');
43
        $propertyNode->shouldReceive('getName')->andReturn($propertyName);
44
        $propertyNode->shouldReceive('getDocComment')->andReturn('the name');
45
46
        $methodNode = \Mockery::mock('PHPMD\Node\MethodNode');
47
        $methodNode->shouldReceive('getImage')->andReturn($methodName);
48
        $methodNode->shouldReceive('getName')->andReturn($methodName);
49
        $methodNode->shouldReceive('getParentName')->andReturn(self::CLASS_NAME);
50
        $methodNode->shouldReceive('getType')->andReturn('method');
51
        $methodNode->shouldReceive('getDocComment')->andReturn('get the name');
52
53
        $classNode = $this->getClassNode('', [$propertyNode], [$methodNode]);
54
55
        $this->assertRule($classNode, 2);
56
    }
57
58
    /**
59
     * @return SuperfluousComment
60
     */
61
    protected function getRule()
62
    {
63
        $rule =  new SuperfluousComment();
64
        $rule->addProperty('percent', '60');
65
        $rule->addProperty('checkClass', '1');
66
        $rule->addProperty('checkProperties', '1');
67
        $rule->addProperty('checkMethods', '1');
68
69
        return $rule;
70
    }
71
72
    /**
73
     * @param string $docComment
74
     * @param array  $properties
75
     * @param array  $methods
76
     *
77
     * @return \Mockery\MockInterface|AbstractNode
78
     */
79
    private function getClassNode($docComment = '', $properties = [], $methods = [])
80
    {
81
        $classNode = \Mockery::mock('PHPMD\Node\ClassNode');
82
83
        $classNode->shouldReceive('getImage')->andReturn(self::CLASS_NAME);
84
        $classNode->shouldReceive('getName')->andReturn(self::CLASS_NAME);
85
        $classNode->shouldReceive('getType')->andReturn('class');
86
        $classNode->shouldReceive('getProperties')->andReturn($properties);
87
        $classNode->shouldReceive('getMethods')->andReturn($methods);
88
        $classNode->shouldReceive('getDocComment')->andReturn($docComment);
89
90
        return $classNode;
91
    }
92
}
93