/**
  * 
  */
 public function testPersistAndDeleteUserAndGroup()
 {
     $uniqueID = \uniqid();
     $oUser = new ApplicationUser();
     $oUser->setUsername('foobar\\' . $uniqueID);
     $oUser->setEmail($uniqueID . '*****@*****.**');
     $oUser->setDisplayName($uniqueID . ' Foobar One');
     $oGroup = new WorkGroup();
     $oGroup->setName($uniqueID . ' Developer Group 2');
     $oUser->addWorkGroup($oGroup);
     $this->oEm->persist($oGroup);
     $this->oEm->flush();
     print 'User Insert ID: ' . $oUser->getId();
     print 'Group Insert ID: ' . $oGroup->getId();
     $iGroupId = $oGroup->getId();
     $iUserId = $oUser->getId();
     $this->oEm->flush();
     unset($oGroup);
     $oGroupRepo = $this->oEm->getRepository('Helpdesk\\Entity\\WorkGroup');
     $oPersistGroup = $oGroupRepo->find($iGroupId);
     $users = $oPersistGroup->getUsers();
     $this->assertInstanceOf('\\Doctrine\\ORM\\PersistentCollection', $users);
     $this->assertEquals(1, $users->count());
     $oUser->removeWorkGroup($oPersistGroup);
     $this->oEm->flush();
     unset($oPersistGroup);
     $oUserRepo = $this->oEm->getRepository('Helpdesk\\Entity\\ApplicationUser');
     $oPersistGroup2 = $oGroupRepo->find($iGroupId);
     $oFetchUser = $oUserRepo->find($iUserId);
     $groups = $oFetchUser->getWorkGroups();
     $this->assertInstanceOf('\\Doctrine\\ORM\\PersistentCollection', $groups);
     $this->assertEquals(0, $groups->count());
     //Testing constrints are setup correctly, deleting group should not remove the user
     print 'Unit of work size: ' . $this->oEm->getUnitOfWork()->size() . PHP_EOL;
     $this->oEm->remove($oPersistGroup2);
     $this->oEm->flush();
     $oPeristsUser = $oUserRepo->find($iUserId);
     $this->assertInstanceOf('\\Helpdesk\\Entity\\ApplicationUser', $oPeristsUser);
     $oRemovedGroup = $oGroupRepo->find($iGroupId);
     $this->assertNull($oRemovedGroup);
     $this->oEm->remove($oPeristsUser);
     $this->oEm->flush();
     $oRemovedUser = $oUserRepo->find($iUserId);
     $this->assertNull($oRemovedUser);
 }
Esempio n. 2
0
 /**
  * @covers Helpdesk\Entity\Project::setName
  * @covers Helpdesk\Entity\Project::getName
  * @covers Helpdesk\Entity\Project::setDescription
  * @covers Helpdesk\Entity\Project::getDescription
  */
 public function testPersistAndDeleteUserAndGroup()
 {
     $uniqueID = \uniqid();
     $oUser = new ApplicationUser();
     $oUser->setUsername('foobar\\' . $uniqueID);
     $oUser->setEmail($uniqueID . '*****@*****.**');
     $oUser->setDisplayName($uniqueID . ' Foobar One');
     $oGroup = new WorkGroup();
     $oGroup->setName($uniqueID . ' Project Manager Group');
     $oUser->addWorkGroup($oGroup);
     $this->oEm->persist($oGroup);
     $this->oEm->flush();
     print 'User Insert ID: ' . $oUser->getId();
     print 'Group Insert ID: ' . $oGroup->getId();
     $iGroupId = $oGroup->getId();
     $iUserId = $oUser->getId();
     $oProject = new Project();
     $oProject->setName('Ecommerce Project');
     $oProject->setDescription('Ecommerce project for the foobar group');
     $oProject->setProjectLead($oUser);
     $this->oEm->persist($oProject);
     $this->oEm->flush();
     $this->assertNotNull($oProject->getId());
     $iProjectID = $oProject->getId();
     $oProjectRepo = $this->oEm->getRepository('Helpdesk\\Entity\\Project');
     $oPersistedProject = $oProjectRepo->find($iProjectID);
     $this->assertNotNull($oPersistedProject);
     $this->assertEquals('Ecommerce Project', $oProject->getName());
     $this->assertEquals('Ecommerce project for the foobar group', $oProject->getDescription());
     $this->oEm->remove($oProject);
     $this->oEm->flush();
     $oGroupRepo = $this->oEm->getRepository('Helpdesk\\Entity\\WorkGroup');
     $oUserRepo = $this->oEm->getRepository('Helpdesk\\Entity\\ApplicationUser');
     $oRemovedProject = $oProjectRepo->find($iProjectID);
     $this->assertNull($oRemovedProject);
     //Testing that constraints are set properly for the table associations.
     $oPersistGroup = $oGroupRepo->find($iGroupId);
     $this->assertInstanceOf('\\Helpdesk\\Entity\\WorkGroup', $oPersistGroup);
     $oPersistUser = $oUserRepo->find($iUserId);
     $this->assertInstanceOf('\\Helpdesk\\Entity\\ApplicationUser', $oPersistUser);
     //Remove the test user and group records from the database
     $this->oEm->remove($oPersistGroup);
     $this->oEm->remove($oPersistUser);
     $this->oEm->flush();
 }