Completed
Push — master ( 8aadd3...9420d2 )
by Alex
14:17
created

PageTest::testPageSlugIsTransliterated()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 9
rs 9.6666
cc 1
eloc 5
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
        static::assertInstanceOf('DateTime', $homepage->getCreatedAt());
53
54
        $homepage->setParent($homepage);
55
        static::assertNull($homepage->getParent());
56
    }
57
58
    public function testLifecycleCallbacks()
59
    {
60
        $homepage = $this->getDummyPage();
61
62
        $child = $this->getDummyPage()->setSlug('child');
63
64
        $homepage->addChild($child);
65
        $child->setParent($homepage);
66
67
        $kernel = static::getKernel();
68
69
        /** @var EntityManager $em */
70
        $em = $kernel->getContainer()->get('doctrine')->getManager();
71
        $em->persist($homepage);
72
        $em->persist($child);
73
        $em->flush();
74
75
        static::assertEquals(array($child), $homepage->getChildren()->toArray());
76
77
        /** @var Page $homepage */
78
        $homepage = $em->getRepository(get_class($homepage))->findOneBy(array('id' => $homepage->getId()));
79
80
        static::assertNotNull($homepage);
81
82
        if (null !== $homepage) {
83
            $em->remove($homepage);
84
            $em->flush();
85
        }
86
87
        $homepage = $em->getRepository(get_class($homepage))->findOneBy(array('id' => $homepage->getId()));
88
89
        static::assertNull($homepage);
90
        static::assertNull($child->getParent());
91
    }
92
93 View Code Duplication
    public function testRemoval()
94
    {
95
        $page = new Page();
96
        $page
97
            ->setTitle('Default page')
98
            ->setSlug('default')
99
            ->setEnabled(true)
100
        ;
101
102
        $child = new Page();
103
        $child
104
            ->setTitle('Child page')
105
            ->setSlug('child')
106
            ->setEnabled(true)
107
            ->setParent($page)
108
        ;
109
        $page->addChild($child);
110
111
        $kernel = static::getKernel();
112
113
        /** @var EntityManager $em */
114
        $em = $kernel->getContainer()->get('doctrine')->getManager();
115
        $em->persist($page);
116
        $em->persist($child);
117
        $em->flush();
118
119
        $page = $em->getRepository(get_class($page))->find($page->getId());
120
121
        $children = $page->getChildren();
122
        /** @var Page $first */
123
        $first = $children[0];
124
        static::assertEquals($child->getId(), $first->getId());
125
126
        $page->removeChild($child);
127
        $child->setParent(null);
128
129
        $em->remove($page);
130
        $em->flush();
131
132
        $child = $em->getRepository(get_class($child))->find($child->getId());
133
134
        static::assertNull($child->getParent());
135
    }
136
137
    public function testPageSlugIsTransliterated()
138
    {
139
        $page = new Page();
140
        $page->setTitle('Default page');
141
142
        $page->updateSlug();
143
144
        static::assertEquals('default-page', $page->getSlug());
145
    }
146
}
147