comfortablynumb il y a 12 ans
Parent
commit
628b372ac6
1 fichiers modifiés avec 45 ajouts et 7 suppressions
  1. 45 7
      tests/Gedmo/Timestampable/ChangeTest.php

+ 45 - 7
tests/Gedmo/Timestampable/ChangeTest.php

@@ -5,7 +5,10 @@ namespace Gedmo\Timestampable;
 use Doctrine\Common\EventManager;
 use Tool\BaseTestCaseORM;
 use Doctrine\Common\Util\Debug,
-    Timestampable\Fixture\TitledArticle;
+    Timestampable\Fixture\TitledArticle,
+    Gedmo\Mapping\Event\Adapter\ORM as BaseAdapterORM,
+    Gedmo\Timestampable\Mapping\Event\TimestampableAdapter,
+    Doctrine\Common\EventArgs;
 
 /**
  * These are tests for Timestampable behavior
@@ -19,12 +22,17 @@ class ChangeTest extends BaseTestCaseORM
 {
     const FIXTURE = "Timestampable\\Fixture\\TitledArticle";
 
+    protected $listener;
+
     protected function setUp()
     {
         parent::setUp();
 
+        $this->listener = new TimestampableListenerStub();
+        $this->listener->eventAdapter = new EventAdapterORMStub();
+
         $evm = new EventManager;
-        $evm->addEventSubscriber(new TimestampableListener);
+        $evm->addEventSubscriber($this->listener);
 
         $this->getMockSqliteEntityManager($evm);
     }
@@ -35,7 +43,9 @@ class ChangeTest extends BaseTestCaseORM
         $test->setTitle('Test');
         $test->setText('Test');
 
-        $date = new \DateTime('now');
+        $currentDate = new \DateTime('now');
+        $this->listener->eventAdapter->setDateValue($currentDate);
+
         $this->em->persist($test);
         $this->em->flush();
         $this->em->clear();
@@ -47,10 +57,12 @@ class ChangeTest extends BaseTestCaseORM
         $this->em->clear();
         //Changed
         $this->assertEquals(
-            $date->format('Y-m-d H:i:s'),
+            $currentDate->format('Y-m-d H:i:s'),
             $test->getChtitle()->format('Y-m-d H:i:s')
         );
-        sleep(1);
+
+        $this->listener->eventAdapter->setDateValue(\DateTime::createFromFormat('Y-m-d H:i:s', '2000-01-01 00:00:00'));
+
         $test = $this->em->getRepository(self::FIXTURE)->findOneByTitle('New Title');
         $test->setText('New Text');
         $this->em->persist($test);
@@ -58,10 +70,9 @@ class ChangeTest extends BaseTestCaseORM
         $this->em->clear();
         //Not Changed
         $this->assertEquals(
-            $date->format('Y-m-d H:i:s'),
+            $currentDate->format('Y-m-d H:i:s'),
             $test->getChtitle()->format('Y-m-d H:i:s')
         );
-        $date = new \DateTime('now');
     }
 
     protected function getUsedEntityFixtures()
@@ -71,3 +82,30 @@ class ChangeTest extends BaseTestCaseORM
         );
     }
 }
+
+class EventAdapterORMStub extends BaseAdapterORM implements TimestampableAdapter
+{
+    protected $dateTime;
+
+    public function setDateValue(\DateTime $dateTime)
+    {
+        $this->dateTime = $dateTime;
+    }
+
+    public function getDateValue($meta, $field)
+    {
+        return $this->dateTime;
+    }
+}
+
+class TimestampableListenerStub extends TimestampableListener
+{
+    public $eventAdapter;
+
+    protected function getEventAdapter(EventArgs $args)
+    {
+        $this->eventAdapter->setEventArgs($args);
+
+        return $this->eventAdapter;
+    }
+}