-
Notifications
You must be signed in to change notification settings - Fork 283
/
SoftDeletableTest.php
121 lines (87 loc) · 3.05 KB
/
SoftDeletableTest.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
119
120
121
<?php
namespace Tests\Knp\DoctrineBehaviors\ORM;
use Knp\DoctrineBehaviors\Reflection\ClassAnalyzer;
use Doctrine\Common\EventManager;
require_once 'EntityManagerProvider.php';
class SoftDeletableTest extends \PHPUnit_Framework_TestCase
{
use EntityManagerProvider;
protected function getUsedEntityFixtures()
{
return array(
'BehaviorFixtures\\ORM\\DeletableEntity'
);
}
protected function getEventManager()
{
$em = new EventManager;
$em->addEventSubscriber(
new \Knp\DoctrineBehaviors\ORM\SoftDeletable\SoftDeletableSubscriber(
new ClassAnalyzer(),
true,
'Knp\DoctrineBehaviors\Model\SoftDeletable\SoftDeletable'
));
return $em;
}
public function testDelete()
{
$em = $this->getEntityManager();
$entity = new \BehaviorFixtures\ORM\DeletableEntity();
$em->persist($entity);
$em->flush();
$this->assertNotNull($id = $entity->getId());
$this->assertFalse($entity->isDeleted());
$em->remove($entity);
$em->flush();
$em->clear();
$entity = $em->getRepository('BehaviorFixtures\ORM\DeletableEntity')->find($id);
$this->assertNotNull($entity);
$this->assertTrue($entity->isDeleted());
}
public function testPostDelete()
{
$em = $this->getEntityManager();
$entity = new \BehaviorFixtures\ORM\DeletableEntity();
$em->persist($entity);
$em->flush();
$this->assertNotNull($id = $entity->getId());
$entity->setDeletedAt((new \DateTime())->modify('+1 day'));
$em->flush();
$em->clear();
$entity = $em->getRepository('BehaviorFixtures\ORM\DeletableEntity')->find($id);
$this->assertNotNull($entity);
$this->assertFalse($entity->isDeleted());
$this->assertTrue($entity->willBeDeleted());
$this->assertTrue($entity->willBeDeleted((new \DateTime())->modify('+2 day')));
$this->assertFalse($entity->willBeDeleted((new \DateTime())->modify('+12 hour')));
$entity->setDeletedAt((new \DateTime())->modify('-1 day'));
$em->flush();
$em->clear();
$entity = $em->getRepository('BehaviorFixtures\ORM\DeletableEntity')->find($id);
$this->assertNotNull($entity);
$this->assertTrue($entity->isDeleted());
}
public function testDeleteInheritance()
{
$em = $this->getEntityManager();
$entity = new \BehaviorFixtures\ORM\DeletableEntityInherit();
$em->persist($entity);
$em->flush();
$em->remove($entity);
$em->flush();
$this->assertTrue($entity->isDeleted());
}
/**
* @test
* @expectedException Exception
*/
public function should_notice_deprecation()
{
set_error_handler(function() {throw new \Exception; }, E_USER_DEPRECATED);
new \Knp\DoctrineBehaviors\ORM\SoftDeletable\SoftDeletableListener;
}
public function tearDown()
{
restore_error_handler();
}
}