-
Notifications
You must be signed in to change notification settings - Fork 283
/
SluggableTest.php
118 lines (81 loc) · 2.59 KB
/
SluggableTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
namespace Tests\Knp\DoctrineBehaviors\ORM;
use Knp\DoctrineBehaviors\Reflection\ClassAnalyzer;
use Doctrine\Common\EventManager;
require_once 'EntityManagerProvider.php';
class SluggableTest extends \PHPUnit_Framework_TestCase
{
use EntityManagerProvider;
protected function getUsedEntityFixtures()
{
return array(
'BehaviorFixtures\\ORM\\SluggableEntity'
);
}
protected function getEventManager()
{
$em = new EventManager;
$em->addEventSubscriber(
new \Knp\DoctrineBehaviors\ORM\Sluggable\SluggableSubscriber(
new ClassAnalyzer(),
false,
'Knp\DoctrineBehaviors\Model\Sluggable\Sluggable'
));
return $em;
}
public function testSlugLoading()
{
$em = $this->getEntityManager();
$entity = new \BehaviorFixtures\ORM\SluggableEntity();
$expected = 'the-name';
$entity->setName('The name');
$em->persist($entity);
$em->flush();
$this->assertNotNull($id = $entity->getId());
$em->clear();
$entity = $em->getRepository('BehaviorFixtures\ORM\SluggableEntity')->find($id);
$this->assertNotNull($entity);
$this->assertEquals($entity->getSlug(), $expected);
}
public function testNotUpdatedSlug()
{
$em = $this->getEntityManager();
$entity = new \BehaviorFixtures\ORM\SluggableEntity();
$expected = 'the-name';
$entity->setName('The name');
$em->persist($entity);
$em->flush();
$entity->setDate(new \DateTime);
$em->persist($entity);
$em->flush();
$this->assertEquals($entity->getSlug(), $expected);
}
public function testUpdatedSlug()
{
$em = $this->getEntityManager();
$entity = new \BehaviorFixtures\ORM\SluggableEntity();
$expected = 'the-name';
$entity->setName('The name');
$em->persist($entity);
$em->flush();
$this->assertEquals($entity->getSlug(), $expected);
$expected = 'the-name-2';
$entity->setName('The name 2');
$em->persist($entity);
$em->flush();
$this->assertEquals($entity->getSlug(), $expected);
}
/**
* @test
* @expectedException Exception
*/
public function should_notice_deprecation()
{
set_error_handler(function() {throw new \Exception; }, E_USER_DEPRECATED);
new \Knp\DoctrineBehaviors\ORM\Sluggable\SluggableListener;
}
public function tearDown()
{
restore_error_handler();
}
}