public function testLazyLoadedEntitiesAreManagedForRemoval() { $this->clearDb(); $michal = new User('michal'); $daniela = new User('daniela'); $city = new City('London'); $michal->setCity($city); $daniela->setCity($city); $this->em->persist($city); $this->em->persist($michal); $this->em->persist($daniela); $this->em->flush(); $this->assertGraphExist('(m:User {login:"******"})-[:LIVES_IN {since:123}]->(c:City {name:"London"})<-[:LIVES_IN {since:123}]-(d:User {login:"******"})'); $this->em->clear(); /** @var City $london */ $london = $this->em->getRepository(City::class)->findOneBy('name', 'London'); $this->assertInstanceOf(LazyRelationshipCollection::class, $london->getHabitants()); $this->assertCount(2, $london->getHabitants()); /** @var LivesIn $livesIn */ foreach ($london->getHabitants() as $livesIn) { $this->assertInstanceOf(User::class, $livesIn->getUser()); $this->assertInstanceOf(City::class, $livesIn->getCity()); $this->assertEquals(123, $livesIn->getSince()); $this->assertInstanceOf(LivesIn::class, $livesIn->getUser()->getLivesIn()); } $u = $london->getHabitants()[0]; $london->getHabitants()->removeElement($u); $u->getUser()->removeCity($u->getCity()); $this->em->flush(); }
/** * @group flush-1 * @group flush */ public function testManagedEntityIsFlushedOnBooleanLabelUpdate() { $user = new User('ikwattro'); $user->setActive(); $this->em->persist($user); $this->em->flush(); $this->assertGraphExist('(u:User:Active {login:"******"})'); $user->setInactive(); $this->assertFalse($user->isActive()); $this->em->flush(); $this->assertGraphNotExist('(u:User:Active {login:"******"})'); }
public function testPaginatedWithCustomOrder() { $this->clearDb(); for ($i = 0; $i <= 100; ++$i) { $user = new User('Login ' . $i); $user->setAge($i); $this->em->persist($user); } $this->em->flush(); /** @var User[] $users */ $users = $this->em->getRepository(User::class)->paginated(0, 10, ['age', BaseRepository::ORDER_DESC]); $this->assertCount(10, $users); $i = 100; foreach ($users as $user) { $this->assertEquals($i, $user->getAge()); --$i; } }
private function init() { $company = new Company('Acme'); for ($i = 0; $i < 10; ++$i) { $u = new User('DummyUser' . $i); $u->setCurrentCompany($company); $company->addEmployee($u); } foreach ($company->getEmployees() as $employee) { foreach ($company->getEmployees() as $employee2) { if ($employee->getLogin() !== $employee2->getLogin()) { $employee2->addLoves($employee); $employee->addLovedBy($employee2); } } } $this->em->persist($company); $this->em->flush(); }
public function testCascadeHydrationForSimpleRelationshipsOnEndNodes() { $this->clearDb(); $user1 = new User('user1'); $user2 = new User('user2'); $company = new Company('Acme'); $user2->setCurrentCompany($company); $company->addEmployee($user2); $user1->addLoves($user2); $this->em->persist($user1); $this->em->persist($user2); $this->em->flush(); $this->em->clear(); /** @var User $user */ $user = $this->em->getRepository(User::class)->findOneBy('login', 'user1'); $this->assertCount(1, $user->getLoves()); $friend = $user->getLoves()[0]; $comp = $friend->getCurrentCompany(); $this->assertEquals('Acme', $comp->getName()); }
/** * @group order-re-prop-lazy */ public function testOrderByRelationshipEntityPropertiesLazyLoaded() { $this->clearDb(); $a = new User('ikwattro'); $b = new User('jexp'); $c = new User('luanne'); $city = new City('London'); $a->setCity($city, 456790); $b->setCity($city, 456789); $c->setCity($city, 456791); $this->em->persist($city); $this->em->flush(); $this->em->clear(); /** @var City $city */ $city = $this->em->getRepository(City::class)->findOneBy('name', 'London'); $this->assertCount(3, $city->getHabitants()); $this->assertEquals(456789, $city->getHabitants()[2]->getSince()); $this->assertEquals(456790, $city->getHabitants()[1]->getSince()); $this->assertEquals(456791, $city->getHabitants()[0]->getSince()); }
/** * @group multiple-rels-same */ public function testMultipleRelationshipTypesWithSameName() { $this->clearDb(); $user1 = new User('user1'); $user2 = new User('user2'); $user3 = new User('user3'); $user4 = new User('user4'); $user5 = new User('user5'); $user6 = new User('user6'); $user1->addLoves($user2); $user1->addLoves($user3); $user6->addLovedBy($user4); $user6->addLovedBy($user5); $this->em->persist($user1); $this->em->persist($user6); $this->em->flush(); $this->em->clear(); $this->assertGraphExist('(u2:User {login:"******"})<-[:IN_LOVE_WITH]-(u1:User {login: "******"})-[:IN_LOVE_WITH]->(u3:User {login: "******"})'); $this->assertGraphExist('(u4:User {login:"******"})-[:IN_LOVE_WITH]->(u6:User {login:"******"})<-[:IN_LOVE_WITH]-(u5:User {login:"******"})'); /** @var BaseRepository $repository */ $repository = $this->em->getRepository(User::class); /** @var User $user */ $user = $repository->findOneBy('login', 'user1'); $this->assertCount(2, $user->getLoves()); foreach ($user->getLoves() as $loved) { $this->assertCount(1, $loved->getLovedBy()); $this->assertEquals('user1', $loved->getLovedBy()[0]->getLogin()); } //$this->em->clear(); /** @var User $u6 */ $u6 = $repository->findOneBy('login', 'user6'); $this->assertCount(2, $u6->getLovedBy()); foreach ($u6->getLovedBy() as $lover) { $this->assertTrue($lover->getLoves()->contains($u6)); } }
/** * @group label */ public function testExtraLabelsAreHydrated() { $user = new User('ikwattro'); $user->setActive(); $this->em->persist($user); $this->em->flush(); $this->em->clear(); /** @var User $ikwattro */ $ikwattro = $this->em->getRepository(User::class)->findOneBy('login', 'ikwattro'); $this->assertTrue($ikwattro->isActive()); }
private function init() { // Setup initial graph $this->clearDb(); $user = new User('ikwattro'); $role = new SecurityRole('view_pages'); foreach (['wood', 'stone', 'water', 'sun', 'coat'] as $res) { $resource = new ResourceModel($res); $this->em->persist($resource); } $user->addRole($role); $this->em->persist($user); $this->em->flush(); $this->em->clear(); }