Completed
Push — master ( c5c436...b453a3 )
by Ruud
15:58
created

TestStructureNode   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 12
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 1
dl 0
loc 12
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getPossibleChildTypes() 0 4 1
A service() 0 4 1
1
<?php
2
3
namespace Kunstmaan\NodeBundle\Tests\Entity;
4
5
use Kunstmaan\NodeBundle\Entity\AbstractPage;
6
use Kunstmaan\NodeBundle\Entity\HasNodeInterface;
7
use Kunstmaan\NodeBundle\Entity\StructureNode;
8
use Kunstmaan\NodeBundle\Form\PageAdminType;
9
use Kunstmaan\NodeBundle\Helper\RenderContext;
10
use PHPUnit\Framework\TestCase;
11
use Symfony\Component\DependencyInjection\Container;
12
use Symfony\Component\DependencyInjection\ContainerInterface;
13
use Symfony\Component\HttpFoundation\Request;
14
15
class TestStructureNode extends StructureNode
16
{
17
    public function getPossibleChildTypes()
18
    {
19
        return [];
20
    }
21
22
    public function service(ContainerInterface $container, Request $request, RenderContext $context)
23
    {
24
        $context['test'] = 'test';
25
    }
26
}
27
28
class TestNode extends AbstractPage
0 ignored issues
show
Coding Style Compatibility introduced by Ruud Denivel
PSR1 recommends that each class should be in its own file to aid autoloaders.

Having each class in a dedicated file usually plays nice with PSR autoloaders and is therefore a well established practice. If you use other autoloaders, you might not want to follow this rule.

Loading history...
29
{
30
    public function getPossibleChildTypes()
31
    {
32
        return [];
33
    }
34
}
35
36
/**
37
 * Class StructureNodeTest
38
 */
39
class StructureNodeTest extends TestCase
0 ignored issues
show
Coding Style Compatibility introduced by Peter Zentjens
PSR1 recommends that each class should be in its own file to aid autoloaders.

Having each class in a dedicated file usually plays nice with PSR autoloaders and is therefore a well established practice. If you use other autoloaders, you might not want to follow this rule.

Loading history...
40
{
41
    public function testIsStructureNode()
42
    {
43
        $structureNode = new TestStructureNode();
44
        $this->assertTrue($structureNode->isStructureNode());
45
46
        $node = new TestNode();
47
        $this->assertFalse($node->isStructureNode());
48
    }
49
50
    public function testIsOnline()
51
    {
52
        $structureNode = new TestStructureNode();
53
        $this->assertFalse($structureNode->isOnline());
54
    }
55
56
    public function testGetSetPageTitle()
57
    {
58
        $node = new TestStructureNode();
59
        $node->setTitle('The Title');
60
        $this->assertEquals('The Title', $node->getPageTitle());
61
        $this->assertEquals('The Title', $node->getTitle());
62
        $this->assertEquals('The Title', $node->__toString());
63
    }
64
65
    public function testGetSetParent()
66
    {
67
        $entity = $this->createMock(HasNodeInterface::class);
68
        $node = new TestStructureNode();
69
        $node->setParent($entity);
0 ignored issues
show
Documentation introduced by Numkil
$entity is of type object<PHPUnit\Framework\MockObject\MockObject>, but the function expects a object<Kunstmaan\NodeBun...ntity\HasNodeInterface>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
70
        $this->assertInstanceOf(get_class($entity), $node->getParent());
71
    }
72
73
    public function testGetDefaultAdminType()
74
    {
75
        $node = new TestStructureNode();
76
        $this->assertEquals(PageAdminType::class, $node->getDefaultAdminType());
77
    }
78
79
    /**
80
     * @group legacy
81
     */
82
    public function testService()
83
    {
84
        $renderContext = new RenderContext();
85
86
        $node = new TestStructureNode();
87
        $node->service(new Container(), new Request(), $renderContext);
0 ignored issues
show
Unused Code introduced by Jeroen Thora
The call to the method Kunstmaan\NodeBundle\Tes...tructureNode::service() seems un-needed as the method has no side-effects.

PHP Analyzer performs a side-effects analysis of your code. A side-effect is basically anything that might be visible after the scope of the method is left.

Let’s take a look at an example:

class User
{
    private $email;

    public function getEmail()
    {
        return $this->email;
    }

    public function setEmail($email)
    {
        $this->email = $email;
    }
}

If we look at the getEmail() method, we can see that it has no side-effect. Whether you call this method or not, no future calls to other methods are affected by this. As such code as the following is useless:

$user = new User();
$user->getEmail(); // This line could safely be removed as it has no effect.

On the hand, if we look at the setEmail(), this method _has_ side-effects. In the following case, we could not remove the method call:

$user = new User();
$user->setEmail('[email protected]'); // This line has a side-effect (it changes an
                                 // instance variable).
Loading history...
88
89
        $this->assertArrayHasKey('test', $renderContext->getArrayCopy());
90
    }
91
}
92