Example #1
0
 public function testManyReferenceAddAndPersist()
 {
     $user = new User();
     $user->addGroup(new Group('Group A'));
     $user->addGroup(new Group('Group B'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
     $user = $this->dm->find('Documents\\User', $user->getId());
     $groups = $user->getGroups();
     $this->assertCount(2, $groups);
     $this->assertFalse($groups->isInitialized());
     $user->addGroup(new Group('Group C'));
     $this->assertCount(3, $groups);
     $this->assertFalse($groups->isInitialized());
     $this->dm->persist($user);
     $this->dm->flush();
     $groups->initialize();
     $this->assertCount(3, $groups);
     $this->assertTrue($groups->isInitialized());
     $user->addGroup(new Group('Group D'));
     $this->assertCount(4, $groups);
     $this->assertTrue($groups->isInitialized());
     $this->dm->persist($user);
     $this->dm->flush();
     $this->assertCount(4, $groups);
     $this->assertTrue($groups->isInitialized());
 }
Example #2
0
 public function setUp()
 {
     parent::setUp();
     $this->ids = array();
     $groupA = new Group('groupA');
     $groupB = new Group('groupB');
     $profile = new Profile();
     $profile->setFirstname('Timothy');
     $tim = new User();
     $tim->setUsername('Tim');
     $tim->setHits(10);
     $tim->addGroup($groupA);
     $tim->addGroup($groupB);
     $tim->setProfile($profile);
     $this->dm->persist($tim);
     $john = new User();
     $john->setUsername('John');
     $john->setHits(10);
     $this->dm->persist($john);
     $this->dm->flush();
     $this->dm->clear();
     $this->ids['tim'] = $tim->getId();
     $this->ids['john'] = $john->getId();
     $this->fc = $this->dm->getFilterCollection();
 }
 public function testSlaveOkayOnPersistentCollection()
 {
     $user = new User();
     $user->addGroup(new Group('Test'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
     $user = $this->dm->getRepository('Documents\\User')->createQueryBuilder()->slaveOkay(false)->getQuery()->getSingleResult();
     $this->assertEquals(array(), $user->getGroups()->getHints());
     $this->dm->clear();
     $users = $this->dm->getRepository('Documents\\User')->createQueryBuilder()->getQuery()->execute();
     $this->assertEquals(array(), $users->getHints());
     $users = array_values($users->toArray());
     $user = $users[0];
     $this->assertEquals(array(), $user->getGroups()->getHints());
     $this->dm->clear();
     $user = $this->dm->getRepository('Documents\\User')->createQueryBuilder()->slaveOkay(true)->getQuery()->getSingleResult();
     $this->assertEquals(array(Query::HINT_SLAVE_OKAY => true), $user->getGroups()->getHints());
     $this->dm->clear();
     $users = $this->dm->getRepository('Documents\\User')->createQueryBuilder()->getQuery()->execute()->slaveOkay(true);
     $this->assertEquals(array(Query::HINT_SLAVE_OKAY => true), $users->getHints());
     $users = array_values($users->toArray());
     $user = $users[0];
     $this->assertEquals(array(Query::HINT_SLAVE_OKAY => true), $user->getGroups()->getHints());
     $this->dm->clear();
     $user = $this->dm->getRepository('Documents\\User')->createQueryBuilder()->getQuery()->getSingleResult();
     $groups = $user->getGroups();
     $groups->setHints(array(Query::HINT_SLAVE_OKAY => true));
     $this->assertEquals(array(Query::HINT_SLAVE_OKAY => true), $groups->getHints());
 }
 public function setUp()
 {
     parent::setUp();
     $user = new User();
     $user->addGroup(new Group('Test'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
 }
Example #5
0
 public function testUnsetFromEmbeddedCollection()
 {
     $userRepository = $this->dm->getRepository('Documents\\User');
     $user = new User();
     $user->addGroup(new Group('group1'));
     $user->addGroup(new Group('group2'));
     $user->addGroup(new Group('group3'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
     $this->assertCount(3, $user->getGroups());
     $user = $userRepository->find($user->getId());
     $user->getGroups()->remove(0);
     $this->dm->flush();
     $this->dm->clear();
     $user = $userRepository->find($user->getId());
     $this->assertCount(2, $user->getGroups());
 }
 public function testFindByRefManyFull()
 {
     $user = new User();
     $group = new Group('group');
     $user->addGroup($group);
     $this->dm->persist($user);
     $this->dm->persist($group);
     $this->dm->flush();
     $this->assertSame($user, $this->dm->getRepository(User::class)->findOneBy(['groups' => $group]));
 }
Example #7
0
 public function testUnsetFromEmbeddedCollection()
 {
     $user = new User();
     $user->setUsername('jon');
     $user->addGroup(new Group('test group 1'));
     $user->addGroup(new Group('test group 2'));
     $user->addGroup(new Group('test group 3'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
     $user = $this->dm->find('Documents\\User', $user->getId());
     $groups = $user->getGroups();
     unset($groups[0]);
     $this->assertEquals(2, count($user->getGroups()));
     $this->dm->flush();
     $this->dm->clear();
     $user = $this->dm->getRepository('Documents\\User')->findOneBy(array('username' => 'jon'));
     $this->assertEquals(2, count($user->getGroups()));
 }
 public function setUp()
 {
     if (version_compare(phpversion('mongo'), '1.3.0', '<')) {
         $this->markTestSkipped('This test is not applicable to driver versions < 1.3.0');
     }
     parent::setUp();
     $user = new User();
     $user->addGroup(new Group('Test'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
 }
Example #9
0
 public function testManyReference()
 {
     $user = new \Documents\User();
     $user->addGroup(new Group('Group 1'));
     $user->addGroup(new Group('Group 2'));
     $this->dm->persist($user);
     $this->dm->flush();
     $groups = $user->getGroups();
     $this->assertTrue($groups instanceof PersistentCollection);
     $this->assertTrue($groups[0]->getId() !== '');
     $this->assertTrue($groups[1]->getId() !== '');
     $user2 = $this->dm->createQuery('Documents\\User')->where('id', $user->getId())->getSingleResult();
     $groups = $user2->getGroups();
     $this->assertTrue($groups instanceof PersistentCollection);
     $this->assertTrue($groups[0] instanceof Group);
     $this->assertTrue($groups[1] instanceof Group);
     unset($groups[0]);
     $this->dm->flush();
     $this->dm->clear();
     $user3 = $this->dm->createQuery('Documents\\User')->where('id', $user->getId())->getSingleResult();
     $this->assertEquals(1, count($user2->getGroups()));
 }
 public function testManyReference()
 {
     $user = new \Documents\User();
     $user->addGroup(new Group('Group 1'));
     $user->addGroup(new Group('Group 2'));
     $this->dm->persist($user);
     $this->dm->flush();
     $groups = $user->getGroups();
     $this->assertTrue($groups instanceof PersistentCollection);
     $this->assertTrue($groups[0]->getId() !== '');
     $this->assertTrue($groups[1]->getId() !== '');
     $this->dm->clear();
     $qb = $this->dm->createQueryBuilder('Documents\\User')->field('id')->equals($user->getId());
     $query = $qb->getQuery();
     $user2 = $query->getSingleResult();
     $groups = $user2->getGroups();
     $this->assertFalse($groups->isInitialized());
     $groups->count();
     $this->assertFalse($groups->isInitialized());
     $groups->isEmpty();
     $this->assertFalse($groups->isInitialized());
     $groups = $user2->getGroups();
     $this->assertTrue($groups instanceof PersistentCollection);
     $this->assertTrue($groups[0] instanceof Group);
     $this->assertTrue($groups[1] instanceof Group);
     $this->assertTrue($groups->isInitialized());
     unset($groups[0]);
     $groups[1]->setName('test');
     $this->dm->flush();
     $this->dm->clear();
     $qb = $this->dm->createQueryBuilder('Documents\\User')->field('id')->equals($user->getId());
     $query = $qb->getQuery();
     $user3 = $query->getSingleResult();
     $groups = $user3->getGroups();
     $this->assertEquals('test', $groups[0]->getName());
     $this->assertEquals(1, count($groups));
 }
Example #11
0
 public function testQueryReferences()
 {
     $group = new \Documents\Group('Test Group');
     $user = new User();
     $user->setUsername('cool');
     $user->addGroup($group);
     $this->dm->persist($user);
     $this->dm->flush();
     $qb = $this->dm->createQueryBuilder('Documents\\User')->field('groups')->references($group);
     $query = $qb->getQuery();
     $user2 = $query->getSingleResult();
     $this->assertSame($user, $user2);
 }
 public function testFindByRefManyFull()
 {
     $user = new User();
     $group = new Group('group');
     $user->addGroup($group);
     $this->dm->persist($user);
     $this->dm->persist($group);
     $this->dm->flush();
     $query = $this->dm->getUnitOfWork()->getDocumentPersister(User::class)->prepareQueryOrNewObj(['groups' => $group]);
     $expectedQuery = ['groups' => ['$elemMatch' => ['$id' => new \MongoId($group->getId())]]];
     $this->assertEquals($expectedQuery, $query);
     $this->assertSame($user, $this->dm->getRepository(User::class)->findOneBy(['groups' => $group]));
 }
 /**
  * @group replication_lag
  */
 public function testPrimeReferencesInvokesPrimer()
 {
     $group1 = new Group();
     $group2 = new Group();
     $account = new Account();
     $user = new User();
     $user->addGroup($group1);
     $user->addGroup($group2);
     $user->setAccount($account);
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
     $invokedArgs = array();
     $primer = function (DocumentManager $dm, ClassMetadata $class, array $ids, array $hints) use(&$invokedArgs) {
         $invokedArgs[] = func_get_args();
     };
     $this->dm->createQueryBuilder('Documents\\User')->field('account')->prime($primer)->field('groups')->prime($primer)->slaveOkay(true)->getQuery()->toArray();
     $this->assertCount(2, $invokedArgs, 'Primer was invoked once for each referenced class.');
     $this->assertArrayHasKey(Query::HINT_SLAVE_OKAY, $invokedArgs[0][3], 'Primer was invoked with UnitOfWork hints from original query.');
     $this->assertTrue($invokedArgs[0][3][Query::HINT_SLAVE_OKAY], 'Primer was invoked with UnitOfWork hints from original query.');
     $accountIds = array($account->getId());
     $groupIds = array($group1->getId(), $group2->getId());
     $this->assertEquals($accountIds, $invokedArgs[0][2]);
     $this->assertEquals($groupIds, $invokedArgs[1][2]);
 }
Example #14
0
 public function testReplaceEntireGroupsArray()
 {
     $account = new Account();
     $account->setName('Jon Test Account');
     $user = new User();
     $user->setUsername('jon333');
     $user->setPassword('changeme');
     $user->setAccount($account);
     $group2 = new Group('member');
     $user->addGroup(new Group('administrator'));
     $user->addGroup($group2);
     $user->addGroup(new Group('moderator'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
     $user = $this->dm->find('Documents\\User', $user->getId());
     $this->assertNotNull($user);
     // Issue is collection must be initialized
     $groups = $user->getGroups();
     $groups[0];
     // initialize collection
     // reffectively remove two of the groups
     //$user->getGroups()->clear();
     //$user->getGroups()->add($group2);
     $user->setGroups(array($group2));
     $this->assertEquals(1, count($user->getGroups()));
     $this->dm->flush();
     $this->dm->clear();
     $user = $this->dm->find('Documents\\User', $user->getId());
     $this->assertEquals(1, count($user->getGroups()));
 }
 public function testReplaceGroups()
 {
     $this->dm->getUnitOfWork()->setDocumentPersister('Documents\\User', new BasicDocumentPersister($this->dm, $this->classMetadata));
     $account = new Account();
     $account->setName('Jon Test Account');
     $user = new User();
     $user->setUsername('jon');
     $user->setPassword('changeme');
     $user->setAccount($account);
     $user->addGroup(new Group('administrator'));
     $user->addGroup(new Group('member'));
     $user->addGroup(new Group('moderator'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
     unset($user, $account);
     $user = $this->dm->findOne('Documents\\User');
     $user->removeGroup('moderator');
     $user->removeGroup('member');
     $this->assertEquals(1, count($user->getGroups()));
     $user->addGroup(new Group('seller'));
     $user->addGroup(new Group('supplier'));
     $this->assertEquals(3, count($user->getGroups()));
     $this->dm->getUnitOfWork()->setDocumentPersister('Documents\\User', $this->persister);
     $this->persister->expects($this->once())->method('update')->with($user);
     $this->dm->getUnitOfWork()->computeChangeSets();
     $update = $this->persister->prepareUpdateData($user);
     $this->assertFalse(array_key_exists('$set', $update));
     $this->assertFalse(array_key_exists('$unset', $update));
     $this->assertTrue(array_key_exists('$pullAll', $update));
     $this->assertTrue(array_key_exists('groups', $update['$pullAll']));
     $this->assertEquals(2, count($update['$pullAll']['groups']));
     $this->assertTrue(array_key_exists('$pushAll', $update));
     $this->assertTrue(array_key_exists('groups', $update['$pushAll']));
     $this->assertEquals(2, count($update['$pushAll']['groups']));
     $this->dm->flush();
     $this->dm->clear();
     unset($user);
     $user = $this->dm->findOne('Documents\\User');
     $this->assertEquals(3, count($user->getGroups()));
 }
 public function testSortReferenceManyOwningSide()
 {
     $user = new \Documents\User();
     $user->addGroup(new Group('Group 1'));
     $user->addGroup(new Group('Group 2'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
     $user = $this->dm->find(get_class($user), $user->getId());
     $groups = $user->getSortedAscGroups();
     $this->assertEquals(2, $groups->count());
     $this->assertEquals('Group 1', $groups[0]->getName());
     $this->assertEquals('Group 2', $groups[1]->getName());
     $groups = $user->getSortedDescGroups();
     $this->assertEquals(2, $groups->count());
     $this->assertEquals('Group 2', $groups[0]->getName());
     $this->assertEquals('Group 1', $groups[1]->getName());
 }
 public function testFlushInitializesNotEmptyPersistentCollection()
 {
     $user = new User();
     $user->addGroup(new Group('Group'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
     $user = $this->dm->getRepository('Documents\\User')->find($user->getId());
     $user->addGroup(new Group('Group 1'));
     $user->addGroup(new Group('Group 2'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->assertTrue($user->getGroups()->isInitialized(), 'A flushed collection should be initialized');
     $this->assertCount(3, $user->getGroups());
     $this->assertCount(3, $user->getGroups()->toArray());
 }