public function testListenerWithUserCallback()
 {
     $user = new \BehaviorFixtures\ORM\UserEntity();
     $user->setUsername('user');
     $user2 = new \BehaviorFixtures\ORM\UserEntity();
     $user2->setUsername('user2');
     $userCallback = function () use($user) {
         return $user;
     };
     $em = $this->getEntityManager($this->getEventManager(null, $userCallback, get_class($user)));
     $em->persist($user);
     $em->persist($user2);
     $em->flush();
     $entity = new \BehaviorFixtures\ORM\BlameableEntity();
     $em->persist($entity);
     $em->flush();
     $id = $entity->getId();
     $createdBy = $entity->getCreatedBy();
     $this->listener->setUser($user2);
     // switch user for update
     $entity = $em->getRepository('BehaviorFixtures\\ORM\\BlameableEntity')->find($id);
     $entity->setTitle('test');
     // need to modify at least one column to trigger onUpdate
     $em->flush();
     $em->clear();
     $this->assertInstanceOf('BehaviorFixtures\\ORM\\UserEntity', $entity->getCreatedBy(), 'createdBy is a user object');
     $this->assertEquals($createdBy->getUsername(), $entity->getCreatedBy()->getUsername(), 'createdBy is constant');
     $this->assertEquals($user2->getUsername(), $entity->getUpdatedBy()->getUsername());
     $this->assertNotEquals($entity->getCreatedBy(), $entity->getUpdatedBy(), 'createBy and updatedBy have diverged since new update');
 }
 /**
  * @test
  */
 public function should_only_persist_user_entity()
 {
     $user = new \BehaviorFixtures\ORM\UserEntity();
     $user->setUsername('user');
     $userCallback = function () use($user) {
         return $user;
     };
     $em = $this->getEntityManager($this->getEventManager('anon.', $userCallback, get_class($user)));
     $em->persist($user);
     $em->flush();
     $entity = new \BehaviorFixtures\ORM\BlameableEntity();
     $em->persist($entity);
     $em->flush();
     $this->assertNull($entity->getCreatedBy(), 'createdBy is a not updated because not a user entity object');
     $this->assertNull($entity->getUpdatedBy(), 'updatedBy is a not updated because not a user entity object');
 }