public function testPropertyChangedListeners()
{
$user = $this->objectManager->find($this->userClassName, 1);
$user->setUsername('changed');
$this->assertEquals(new ChangeSet($user, array('username' => new Change('username', 'jwage', 'changed'))), $this->unitOfWork->getObjectChangeSet($user));
$this->objectManager->flush();
$this->objectManager->clear();
$this->assertEquals(new ChangeSet($user, array()), $this->unitOfWork->getObjectChangeSet($user));
$user2 = $this->objectManager->find($this->userClassName, 1);
$this->assertEquals('changed', $user2->getUsername());
$user3 = $this->createTestObject();
$user3->setId(3);
$user3->setUsername('another');
$this->assertEquals(new ChangeSet($user3, array()), $this->unitOfWork->getObjectChangeSet($user3));
$this->objectManager->flush();
$this->objectManager->clear();
$this->assertNull($this->objectManager->find($this->userClassName, 3));
$this->objectManager->persist($user3);
$this->objectManager->flush();
$this->assertNotNull($this->objectManager->find($this->userClassName, 3));
$user3->setUsername('changed');
$this->assertEquals(new ChangeSet($user3, array('username' => new Change('username', 'another', 'changed'))), $this->unitOfWork->getObjectChangeSet($user3));
$this->objectManager->flush();
$this->objectManager->clear();
$user3 = $this->objectManager->find($this->userClassName, 3);
$this->assertEquals('changed', $user3->getUsername());
$user3->setUsername('testing');
$this->assertEquals(new ChangeSet($user3, array('username' => new Change('username', 'changed', 'testing'))), $this->unitOfWork->getObjectChangeSet($user3));
$this->objectManager->clear();
$this->objectManager->flush();
$this->assertEquals(new ChangeSet($user, array()), $this->unitOfWork->getObjectChangeSet($user));
$user3 = $this->objectManager->find($this->userClassName, 3);
$this->assertEquals('changed', $user3->getUsername());
}