瀏覽代碼

[tests] mapping tests for event adapter

gediminasm 14 年之前
父節點
當前提交
a7365a52b8

+ 55 - 0
tests/Gedmo/Mapping/MappingEventAdapterTest.php

@@ -0,0 +1,55 @@
+<?php
+
+namespace Gedmo\Mapping;
+
+use Gedmo\Mapping\Mock\EventSubscriberMock;
+use Gedmo\Mapping\Mock\EventSubscriberCustomMock;
+use Gedmo\Mapping\Event\Adapter\ORM as EventAdapterORM;
+use Doctrine\ORM\Event\LifecycleEventArgs;
+use Gedmo\Mapping\Mock\Mapping\Event\Adapter\ORM as CustomizedORMAdapter;
+
+class MappingEventAdapterTest extends \PHPUnit_Framework_TestCase
+{
+    public function testCustomizedAdapter()
+    {
+        $emMock = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $subscriber = new EventSubscriberCustomMock();
+        $args = new LifecycleEventArgs(new \stdClass(), $emMock);
+
+        $adapter = $subscriber->getAdapter($args);
+        $this->assertTrue($adapter instanceof CustomizedORMAdapter);
+    }
+
+    public function testCorrectAdapter()
+    {
+        $emMock = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $subscriber = new EventSubscriberMock();
+        $args = new LifecycleEventArgs(new \stdClass(), $emMock);
+
+        $adapter = $subscriber->getAdapter($args);
+        $this->assertTrue($adapter instanceof EventAdapterORM);
+        $this->assertTrue($adapter->getObjectManager() === $emMock);
+        $this->assertTrue($adapter->getObject() instanceof \stdClass);
+    }
+
+    public function testAdapterBehavior()
+    {
+        $eventArgsMock = $this->getMockBuilder('Doctrine\\ORM\\Event\\LifecycleEventArgs')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $eventArgsMock->expects($this->once())
+            ->method('getEntityManager');
+
+        $eventArgsMock->expects($this->once())
+            ->method('getEntity');
+
+        $eventAdapter = new EventAdapterORM;
+        $eventAdapter->setEventArgs($eventArgsMock);
+        $eventAdapter->getObjectManager();
+        $eventAdapter->getObject();
+    }
+}

+ 23 - 0
tests/Gedmo/Mapping/Mock/EventSubscriberCustomMock.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace Gedmo\Mapping\Mock;
+
+use Gedmo\Mapping\MappedEventSubscriber;
+
+class EventSubscriberCustomMock extends MappedEventSubscriber
+{
+    protected function getNamespace()
+    {
+        return __NAMESPACE__;
+    }
+
+    public function getAdapter($args)
+    {
+        return $this->getEventAdapter($args);
+    }
+
+    public function getSubscribedEvents()
+    {
+        return array();
+    }
+}

+ 23 - 0
tests/Gedmo/Mapping/Mock/EventSubscriberMock.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace Gedmo\Mapping\Mock;
+
+use Gedmo\Mapping\MappedEventSubscriber;
+
+class EventSubscriberMock extends MappedEventSubscriber
+{
+    protected function getNamespace()
+    {
+        return 'something';
+    }
+
+    public function getAdapter($args)
+    {
+        return $this->getEventAdapter($args);
+    }
+
+    public function getSubscribedEvents()
+    {
+        return array();
+    }
+}

+ 8 - 0
tests/Gedmo/Mapping/Mock/Mapping/Event/Adapter/ORM.php

@@ -0,0 +1,8 @@
+<?php
+
+namespace Gedmo\Mapping\Mock\Mapping\Event\Adapter;
+
+use Gedmo\Mapping\Event\Adapter\ORM as EventAdapterORM;
+
+class ORM extends EventAdapterORM
+{}

+ 10 - 7
tests/bootstrap.php

@@ -2,7 +2,7 @@
 /**
  * This is bootstrap for phpUnit unit tests,
  * use README.md for more details
- * 
+ *
  * @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
  * @package Gedmo.Tests
  * @link http://www.gediminasm.org
@@ -25,30 +25,33 @@ if (!file_exists($classLoaderFile)) {
 
 require_once $classLoaderFile;
 $classLoader = new Doctrine\Common\ClassLoader(
-    'Doctrine\ORM', 'doctrine-orm/lib' 
+    'Doctrine\ORM', 'doctrine-orm/lib'
 );
 $classLoader->register();
 
 $classLoader = new Doctrine\Common\ClassLoader(
-    'Doctrine\DBAL', 'doctrine-dbal/lib' 
+    'Doctrine\DBAL', 'doctrine-dbal/lib'
 );
 $classLoader->register();
 
 $classLoader = new Doctrine\Common\ClassLoader(
-    'Doctrine\MongoDB', 'doctrine-mongodb/lib' 
+    'Doctrine\MongoDB', 'doctrine-mongodb/lib'
 );
 $classLoader->register();
 
 $classLoader = new Doctrine\Common\ClassLoader(
-    'Doctrine\ODM', 'doctrine-mongodb-odm/lib' 
+    'Doctrine\ODM', 'doctrine-mongodb-odm/lib'
 );
 $classLoader->register();
 
 $classLoader = new Doctrine\Common\ClassLoader(
-    'Doctrine', 'doctrine-common/lib' 
+    'Doctrine', 'doctrine-common/lib'
 );
 $classLoader->register();
 
+$classLoader = new Doctrine\Common\ClassLoader('Gedmo\Mapping\Mock', __DIR__);
+$classLoader->register();
+
 $classLoader = new Doctrine\Common\ClassLoader('Symfony');
 $classLoader->register();
 
@@ -75,4 +78,4 @@ $classLoader = new Doctrine\Common\ClassLoader('Mapping\Fixture', __DIR__ . '/Ge
 $classLoader->register();
 
 $classLoader = new Doctrine\Common\ClassLoader('Loggable\Fixture', __DIR__ . '/Gedmo');
-$classLoader->register();
+$classLoader->register();