Completed
Push — master ( 028ddc...8aadd3 )
by Alex
13:57
created

PageTest::getDummyPage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 4
Bugs 1 Features 1
Metric Value
c 4
b 1
f 1
dl 0
loc 12
rs 9.4285
cc 1
eloc 8
nc 1
nop 0
1
<?php
2
3
/*
4
* This file is part of the OrbitaleCmsBundle package.
5
*
6
* (c) Alexandre Rock Ancelet <[email protected]>
7
*
8
* For the full copyright and license information, please view the LICENSE
9
* file that was distributed with this source code.
10
*/
11
12
namespace Orbitale\Bundle\CmsBundle\Tests\Entity;
13
14
use Doctrine\ORM\EntityManager;
15
use Orbitale\Bundle\CmsBundle\Tests\Fixtures\AbstractTestCase;
16
use Orbitale\Bundle\CmsBundle\Tests\Fixtures\TestBundle\Entity\Page;
17
18
class PageTest extends AbstractTestCase
19
{
20
    public function getDummyPage()
21
    {
22
        $page = new Page();
23
24
        return $page
25
            ->setHomepage(true)
26
            ->setSlug('home')
27
            ->setTitle('My homepage')
28
            ->setHost('localhost')
29
            ->setContent('Hello world!')
30
        ;
31
    }
32
33
    public function testOneHomepage()
34
    {
35
        $homepage = $this->getDummyPage();
36
37
        $kernel = static::getKernel();
38
39
        /** @var EntityManager $em */
40
        $em = $kernel->getContainer()->get('doctrine')->getManager();
41
        $em->persist($homepage);
42
        $em->flush();
43
44
        /** @var Page $homepage */
45
        $homepage = $em->getRepository(get_class($homepage))->find($homepage->getId());
46
47
        static::assertEquals($homepage->getTitle(), (string) $homepage);
48
49
        static::assertFalse($homepage->isEnabled()); // Base value in entity
50
        static::assertTrue($homepage->isHomepage());
51
        static::assertEquals('localhost', $homepage->getHost());
52
53
        $homepage->setParent($homepage);
54
        static::assertNull($homepage->getParent());
55
    }
56
57
    public function testLifecycleCallbacks()
58
    {
59
        $homepage = $this->getDummyPage();
60
61
        $child = $this->getDummyPage()->setSlug('child');
62
63
        $homepage->addChild($child);
64
        $child->setParent($homepage);
65
66
        $kernel = static::getKernel();
67
68
        /** @var EntityManager $em */
69
        $em = $kernel->getContainer()->get('doctrine')->getManager();
70
        $em->persist($homepage);
71
        $em->persist($child);
72
        $em->flush();
73
74
        static::assertEquals(array($child), $homepage->getChildren()->toArray());
75
76
        /** @var Page $homepage */
77
        $homepage = $em->getRepository(get_class($homepage))->findOneBy(array('id' => $homepage->getId()));
78
79
        static::assertNotNull($homepage);
80
81
        if (null !== $homepage) {
82
            $em->remove($homepage);
83
            $em->flush();
84
        }
85
86
        $homepage = $em->getRepository(get_class($homepage))->findOneBy(array('id' => $homepage->getId()));
87
88
        static::assertNull($homepage);
89
        static::assertNull($child->getParent());
90
    }
91
92 View Code Duplication
    public function testRemoval()
93
    {
94
        $page = new Page();
95
        $page
96
            ->setTitle('Default page')
97
            ->setSlug('default')
98
            ->setEnabled(true)
99
        ;
100
101
        $child = new Page();
102
        $child
103
            ->setTitle('Child page')
104
            ->setSlug('child')
105
            ->setEnabled(true)
106
            ->setParent($page)
107
        ;
108
        $page->addChild($child);
109
110
        $kernel = static::getKernel();
111
112
        /** @var EntityManager $em */
113
        $em = $kernel->getContainer()->get('doctrine')->getManager();
114
        $em->persist($page);
115
        $em->persist($child);
116
        $em->flush();
117
118
        $page = $em->getRepository(get_class($page))->find($page->getId());
119
120
        $children = $page->getChildren();
121
        /** @var Page $first */
122
        $first = $children[0];
123
        static::assertEquals($child->getId(), $first->getId());
124
125
        $page->removeChild($child);
126
        $child->setParent(null);
127
128
        $em->remove($page);
129
        $em->flush();
130
131
        $child = $em->getRepository(get_class($child))->find($child->getId());
132
133
        static::assertNull($child->getParent());
134
    }
135
}
136