Beispiel #1
0
 /**
  * @param object $entity
  * @param bool $mockToken
  * @param bool $mockUser
  * @param bool $detachedUser
  * @param bool $reloadUser
  * @dataProvider prePersistAndPreUpdateDataProvider
  */
 public function testPreUpdate($entity, $mockToken = false, $mockUser = false, $detachedUser = null, $reloadUser = null)
 {
     $oldDate = new \DateTime('2012-12-12 12:12:12');
     $oldUser = new User();
     $oldUser->setFirstName('oldUser');
     if ($entity instanceof Contact) {
         $entity->setUpdatedAt($oldDate);
         $entity->setUpdatedBy($oldUser);
     }
     $initialEntity = clone $entity;
     $newUser = null;
     if ($mockUser) {
         $newUser = new User();
         $newUser->setFirstName('newUser');
     }
     $this->mockSecurityContext($mockToken, $mockUser, $newUser);
     $unitOfWork = $this->getMockBuilder('Doctrine\\ORM\\UnitOfWork')->setMethods(array('propertyChanged', 'getEntityState'))->disableOriginalConstructor()->getMock();
     $entityManager = $this->getEntityManagerMock($reloadUser, $newUser);
     $entityManager->expects($this->any())->method('getUnitOfWork')->will($this->returnValue($unitOfWork));
     if ($entity instanceof Contact) {
         $callIndex = 0;
         if (null !== $detachedUser) {
             $unitOfWork->expects($this->at($callIndex++))->method('getEntityState')->with($newUser)->will($this->returnValue($detachedUser ? UnitOfWork::STATE_DETACHED : UnitOfWork::STATE_MANAGED));
         }
         $unitOfWork->expects($this->at($callIndex++))->method('propertyChanged')->with($entity, 'updatedAt', $oldDate, $this->isInstanceOf('\\DateTime'));
         $unitOfWork->expects($this->at($callIndex))->method('propertyChanged')->with($entity, 'updatedBy', $oldUser, $newUser);
     } else {
         $unitOfWork->expects($this->never())->method($this->anything());
     }
     $changeSet = array();
     $args = new PreUpdateEventArgs($entity, $entityManager, $changeSet);
     $this->contactListener->preUpdate($args);
     if (!$entity instanceof Contact) {
         $this->assertEquals($initialEntity, $entity);
         return;
     }
     $this->assertInstanceOf('\\DateTime', $entity->getUpdatedAt());
     if ($mockToken && $mockUser) {
         $this->assertEquals($newUser, $entity->getUpdatedBy());
     } else {
         $this->assertNull($entity->getUpdatedBy());
     }
 }