/** * */ 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); }
/** * @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(); }