public function testManyEmbeddedReference() { $user = new \Documents\User(); $user->addPhonenumber(new Phonenumber('6155139185')); $user->addPhonenumber(new Phonenumber('6153303769')); $this->dm->persist($user); $this->dm->flush(); $this->dm->clear(); $user2 = $this->dm->createQuery('Documents\\User')->where('id', $user->getId())->getSingleResult(); $this->assertEquals($user->getPhonenumbers(), $user2->getPhonenumbers()); }
public function testManyEmbedded() { $user = new \Documents\User(); $user->addPhonenumber(new Phonenumber('6155139185')); $user->addPhonenumber(new Phonenumber('6153303769')); $this->dm->persist($user); $this->dm->flush(); $this->dm->clear(); $user2 = $this->dm->createQueryBuilder('Documents\\User')->field('id')->equals($user->getId())->getQuery()->getSingleResult(); $this->assertNotNull($user2); $this->assertEquals($user->getPhonenumbers()->toArray(), $user2->getPhonenumbers()->toArray()); }
public function testFindByEmbedMany() { $user = new User(); $phonenumber = new Phonenumber('12345678'); $user->addPhonenumber($phonenumber); $this->dm->persist($user); $this->dm->flush(); $this->assertSame($user, $this->dm->getRepository(User::class)->findOneBy(['phonenumbers' => $phonenumber])); }
public function testAddElemMatch() { $user = new User(); $user->setUsername('boo'); $phonenumber = new Phonenumber('6155139185'); $user->addPhonenumber($phonenumber); $this->dm->persist($user); $this->dm->flush(); $qb = $this->dm->createQueryBuilder('Documents\\User'); $qb->field('phonenumbers')->elemMatch($qb->expr()->field('phonenumber')->equals('6155139185')); $query = $qb->getQuery(); $user = $query->getSingleResult(); $this->assertNotNull($user); }
public function testAddElemMatchWithDeepFields() { $user1 = new User(); $user1->setUsername('ben'); $user2 = new User(); $user2->setUsername('boo'); $phonenumber = new Phonenumber('2125550123', $user1); $user2->addPhonenumber($phonenumber); $this->dm->persist($user1); $this->dm->persist($user2); $this->dm->flush(); $qb = $this->dm->createQueryBuilder('Documents\\User'); $embeddedQb = $this->dm->createQueryBuilder('Documents\\Phonenumber'); $qb->field('phonenumbers')->elemMatch($embeddedQb->expr()->field('lastCalledBy.$id')->equals(new \MongoId($user1->getId()))); $query = $qb->getQuery(); $user = $query->getSingleResult(); $this->assertNotNull($user); }
public function testUpdateCollectionDuringOnFlushAndRecomputSingleDocumentChangeSet() { // create a test document $test = new User(); $test->setUsername('toby'); $test->addPhonenumber(new Phonenumber('1111')); $this->dm->persist($test); $this->dm->flush(); $test->setUsername('lucy'); $this->dm->flush(); $this->dm->clear(); $repository = $this->dm->getRepository(get_class($test)); $test = $repository->findOneBy(array('username' => 'lucy')); $phonenumbers = array(); foreach ($test->getPhonenumbers() as $phonenumber) { $phonenumbers[] = $phonenumber->getPhonenumber(); } sort($phonenumbers); $this->assertEquals(array('1111', '2222'), $phonenumbers); }
public function testRemoveEmbeddedDocument() { $address = new Address(); $address->setAddress('6512 Mercomatic Ct.'); $user = new User(); $user->setUsername('jwagettt'); $user->setAddress($address); $user->addPhonenumber(new Phonenumber('6155139185')); $user->addPhonenumber(new Phonenumber('6155139185')); $this->dm->persist($user); $this->dm->flush(); $user->removeAddress(); $user->getPhonenumbers()->remove(0); $user->getPhonenumbers()->remove(1); $this->dm->flush(); $check = $this->dm->getDocumentCollection('Documents\\User')->findOne(); $this->assertEmpty($check['phonenumbers']); $this->assertFalse(isset($check['address'])); }
public function testPrimeEmbeddedReferenceOneLevelDeep() { $user1 = new User(); $user2 = new User(); $phone = new Phonenumber('555-GET-THIS', $user2); $user1->addPhonenumber($phone); $user1->setUsername('SomeName'); $this->dm->persist($user1); $this->dm->persist($user2); $this->dm->flush(); $this->dm->clear(); $qb = $this->dm->createQueryBuilder('Documents\\User')->field('username')->equals('SomeName')->field('phonenumbers.lastCalledBy')->prime(true); $user = $qb->getQuery()->getSingleResult(); $phonenumbers = $user->getPhonenumbers(); $this->assertCount(1, $phonenumbers); $phonenumber = $phonenumbers->current(); $this->assertNotInstanceOf('Doctrine\\ODM\\MongoDB\\Proxy\\Proxy', $phonenumber); $this->assertInstanceOf('Documents\\Phonenumber', $phonenumber); }
public function testSchedulingCollectionDeletionAfterSchedulingForUpdate() { $user = new User(); $user->addPhonenumber(new Phonenumber('12345678')); $this->dm->persist($user); $this->dm->flush(); $user->addPhonenumber(new Phonenumber('87654321')); $this->uow->computeChangeSet($this->dm->getClassMetadata(get_class($user)), $user); $this->assertTrue($this->uow->isCollectionScheduledForUpdate($user->getPhonenumbers())); $this->assertFalse($this->uow->isCollectionScheduledForDeletion($user->getPhonenumbers())); $user->getPhonenumbers()->clear(); $this->uow->computeChangeSet($this->dm->getClassMetadata(get_class($user)), $user); $this->assertFalse($this->uow->isCollectionScheduledForUpdate($user->getPhonenumbers())); $this->assertTrue($this->uow->isCollectionScheduledForDeletion($user->getPhonenumbers())); $this->ql->clear(); $this->dm->flush(); $this->dm->clear(); $user = $this->dm->find(get_class($user), $user->getId()); $this->assertCount(0, $user->getPhonenumbers()); }
$classLoader->register(); $config = new Configuration(); /* $config->setLoggerCallable(function(array $log) { print_r($log); }); $config->setMetadataCacheImpl(new ApcCache()); */ $config->setProxyDir(__DIR__ . '/Proxies'); $config->setProxyNamespace('Proxies'); $reader = new AnnotationReader(); $reader->setDefaultAnnotationNamespace('Doctrine\\ODM\\MongoDB\\Mapping\\'); $config->setMetadataDriverImpl(new AnnotationDriver($reader, __DIR__ . '/Documents')); //$config->setMetadataDriverImpl(new XmlDriver(__DIR__ . '/xml')); //$config->setMetadataDriverImpl(new YamlDriver(__DIR__ . '/yaml')); //$config->setMetadataDriverImpl(new PHPDriver()); $dm = DocumentManager::create(new Mongo(), $config); $profile = new Profile(); $profile->setName('Jonathan H. Wage'); $profile->addSong(new Song('Testinfuckckcg')); $user = new User(); $user->setUsername('jwage'); $user->setPassword('changeme'); $user->addPhonenumber(new Phonenumber('6155139185')); $user->setProfile($profile); $configuration = new ConfigurationDoc(); $configuration->setTimezone('Eastern'); $configuration->setTheme('doctrine'); $user->setConfiguration($configuration); $dm->persist($user); $dm->flush();