示例#1
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 testFlushOptions()
 {
     $user = new User();
     $user->setUsername('jwage');
     $this->dm->persist($user);
     $this->dm->flush(null, array('safe' => true));
     $user->setUsername('ok');
     $this->dm->flush(null, array('safe' => true));
 }
示例#3
0
 public function testFlushOptions()
 {
     $user = new User();
     $user->setUsername('jwage');
     $this->dm->persist($user);
     $this->dm->flush();
     $user->setUsername('ok');
     $this->dm->flush();
 }
示例#4
0
 public function testDetatchNewDocumentDuringOnFlush()
 {
     // create a test document
     $test = new User();
     $test->setUsername('toby');
     $this->dm->persist($test);
     $this->dm->flush();
     $this->dm->clear();
     $repository = $this->dm->getRepository(get_class($test));
     $test = $repository->find($test->getId());
     $this->assertNull($test);
 }
 public function testFindAndModifyAlt()
 {
     $doc = new User();
     $doc->setUsername('jwage');
     $this->dm->persist($doc);
     $this->dm->flush();
     // test update findAndModify
     $q = $this->dm->createQueryBuilder()->findAndUpdate('Documents\\User')->returnNew(true)->field('username')->equals('jwage')->field('username')->set('Romain Neutron')->getQuery();
     $result = $q->execute();
     // Test the username was set
     $this->assertEquals('Romain Neutron', $result->getUsername());
 }
示例#6
0
 public function testCountFoundOnlyBehavior()
 {
     $usernames = array('David', 'Xander', 'Alex', 'Kris', 'Jon');
     foreach ($usernames as $username) {
         $user = new User();
         $user->setUsername($username);
         $this->dm->persist($user);
     }
     $this->dm->flush();
     $cursor = $this->dm->createQueryBuilder('Documents\\User')->sort('username', 'asc')->limit(2)->getQuery()->execute();
     $this->assertEquals(5, $cursor->count());
     $this->assertEquals(2, $cursor->count(true));
 }
示例#7
0
 public function testOneReference()
 {
     $account = new Account();
     $account->setName('Test Account');
     $user = new User();
     $user->setUsername('jwage');
     $user->setAccount($account);
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->flush();
     $this->dm->clear();
     $accountId = $user->getAccount()->getId();
     $user2 = $this->dm->createQuery('Documents\\User')->where('id', $user->getId())->getSingleResult();
 }
示例#8
0
 public function testDetach()
 {
     $user = new User();
     $user->setUsername('jon');
     $user->setPassword('changeme');
     $this->dm->persist($user);
     $this->dm->flush();
     $user->setUsername('whoop');
     $this->dm->detach($user);
     $this->dm->flush();
     $this->dm->clear();
     $user2 = $this->dm->find('Documents\\User', $user->getId());
     $this->assertEquals('jon', $user2->getUsername());
 }
示例#9
0
 public function testDates()
 {
     $user = new User();
     $user->setUsername('w00ting');
     $this->dm->persist($user);
     $this->dm->flush();
     $this->assertTrue($user->getCreatedAt() instanceof \DateTime);
     $user->setCreatedAt('1985-09-01 00:00:00');
     $this->dm->flush();
     $this->dm->clear();
     $user = $this->dm->getRepository('Documents\\User')->findOneByUsername('w00ting');
     $this->assertEquals('w00ting', $user->getUsername());
     $this->assertTrue($user->getCreatedAt() instanceof \DateTime);
     $this->assertEquals('09/01/1985', $user->getCreatedAt()->format('m/d/Y'));
 }
示例#10
0
 public function testOldDate()
 {
     $user = new User();
     $user->setUsername('datetest');
     $user->setCreatedAt('1900-01-01');
     $this->dm->persist($user);
     $this->dm->flush();
     $user->setUsername('datetest2');
     $this->dm->flush();
     $this->dm->clear();
     $test = $this->dm->getDocumentCollection('Documents\\User')->findOne(array('username' => 'datetest2'));
     $this->assertTrue(isset($test['createdAt']));
     $user = $this->dm->getRepository('Documents\\User')->findOneBy(array('username' => 'datetest2'));
     $this->assertTrue($user->getCreatedAt() instanceof \DateTime);
     $this->assertEquals('1900-01-01', $user->getCreatedAt()->format('Y-m-d'));
 }
 public function testOneReference()
 {
     $account = new Account();
     $account->setName('Test Account');
     $user = new User();
     $user->setUsername('jwage');
     $user->setAccount($account);
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->flush();
     $this->dm->clear();
     $accountId = $user->getAccount()->getId();
     $qb = $this->dm->createQueryBuilder('Documents\\User')->field('id')->equals($user->getId());
     $query = $qb->getQuery();
     $user2 = $query->getSingleResult();
 }
示例#12
0
 public function testRemove()
 {
     $account = new Account();
     $account->setName('Jon Test Account');
     $user = new User();
     $user->setUsername('jon');
     $user->setPassword('changeme');
     $user->setAccount($account);
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->remove($user);
     $this->dm->flush();
     $account = $this->dm->find('Documents\\Account', $account->getId());
     $this->assertNull($account);
     $user = $this->dm->find('Documents\\User', $user->getId());
     $this->assertNull($user);
 }
 public function testInsertIncludesAllNestedCollections()
 {
     $user = new User();
     $user->setUsername('malarzm');
     $privateBook = new Phonebook('Private');
     $privateBook->addPhonenumber(new Phonenumber('12345678'));
     $user->addPhonebook($privateBook);
     $this->dm->persist($user);
     $this->dm->flush();
     $this->assertCount(1, $this->ql, 'Inserting a document includes all nested collections and requires one query');
     $this->dm->clear();
     $user = $this->dm->find(get_class($user), $user->getId());
     $this->assertEquals('malarzm', $user->getUsername());
     $this->assertCount(1, $user->getPhonebooks());
     $this->assertEquals('Private', $user->getPhonebooks()->first()->getTitle());
     $this->assertCount(1, $user->getPhonebooks()->first()->getPhonenumbers());
     $this->assertEquals('12345678', $user->getPhonebooks()->first()->getPhonenumbers()->first()->getPhonenumber());
 }
示例#14
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()));
 }
示例#15
0
 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);
 }
示例#16
0
 public function testRecreateShouldPreserveSorting()
 {
     $usernames = array('David', 'Xander', 'Alex', 'Kris', 'Jon');
     foreach ($usernames as $username) {
         $user = new User();
         $user->setUsername($username);
         $this->dm->persist($user);
     }
     $this->dm->flush();
     $qb = $this->dm->createQueryBuilder('Documents\\User')->sort('username', 'asc');
     $cursor = $qb->getQuery()->execute();
     sort($usernames);
     foreach ($usernames as $username) {
         $this->assertEquals($username, $cursor->getNext()->getUsername());
     }
     $cursor->recreate();
     foreach ($usernames as $username) {
         $this->assertEquals($username, $cursor->getNext()->getUsername());
     }
 }
 /**
  * Tests Bi-Directional Reference "one to many" with nullable=true flag
  *
  * @url http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/bidirectional-references.html
  */
 public function testOneToMany()
 {
     $user = new User();
     $user->setUsername('w00ting');
     $this->dm->persist($user);
     $this->dm->flush();
     $post1 = new BlogPost();
     $post1->name = 'post1';
     $post1->setUser($user);
     $post2 = new BlogPost();
     $post2->name = 'post2';
     $post2->setUser($user);
     $post3 = new BlogPost();
     $post3->name = 'post3';
     $post3->setUser($user);
     $this->dm->persist($post1);
     $this->dm->persist($post2);
     $this->dm->persist($post3);
     $this->dm->flush();
     $post1->setUser(null);
     $this->dm->flush();
     $this->assertNull($post1->user);
 }
示例#18
0
 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']));
 }
示例#19
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);
 }
示例#20
0
 public function testMapReduce2()
 {
     $user = new User();
     $user->setUsername('bob');
     $event1 = new Event();
     $event1->setUser($user);
     $event1->setType('sale');
     $event1->setTitle('Test 1');
     $event2 = new Event();
     $event2->setUser($user);
     $event2->setType('sale');
     $event2->setTitle('Test 2');
     $event3 = new Event();
     $event3->setUser($user);
     $event3->setType('sale');
     $event3->setTitle('Test 2');
     $this->dm->persist($user);
     $this->dm->persist($event1);
     $this->dm->persist($event2);
     $this->dm->persist($event3);
     $this->dm->flush();
     $query = $this->dm->createQuery('Documents\\Event')->where('type', 'sale')->map('function() { emit(this.user.$id, 1); }')->reduce("function(k, vals) {\n                var sum = 0;\n                for (var i in vals) {\n                    sum += vals[i]; \n                }\n                return sum;\n            }");
     $user2 = $query->getSingleResult();
     $this->assertEquals($user->getId(), $user2['_id']);
     $this->assertEquals(3, $user2['value']);
 }
示例#21
0
 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);
 }
示例#22
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()));
 }
示例#23
0
 public function testCollection()
 {
     $user = new \Documents\User();
     $user->setUsername('joncolltest');
     $user->log(array('test'));
     $user->log(array('test'));
     $this->dm->persist($user);
     $this->dm->flush();
     $this->dm->clear();
     $coll = $this->dm->getDocumentCollection('Documents\\User');
     $document = $coll->findOne(array('username' => 'joncolltest'));
     $this->assertEquals(2, count($document['logs']));
     $document = $this->dm->getRepository('Documents\\User')->findOneBy(array('username' => 'joncolltest'));
     $this->assertEquals(2, count($document->getLogs()));
     $document->log(array('test'));
     $this->dm->flush();
     $this->dm->clear();
     $document = $this->dm->getRepository('Documents\\User')->findOneBy(array('username' => 'joncolltest'));
     $this->assertEquals(3, count($document->getLogs()));
     $document->setLogs(array('ok', 'test'));
     $this->dm->flush();
     $this->dm->clear();
     $document = $this->dm->getRepository('Documents\\User')->findOneBy(array('username' => 'joncolltest'));
     $this->assertEquals(array('ok', 'test'), $document->getLogs());
 }
示例#24
0
 public function testFindUser()
 {
     $account = new Account();
     $account->setName('Jon Test Account');
     $user1 = new CustomUser();
     $user1->setId('userId');
     $user1->setUsername('user1');
     $user1->setPassword('changeme');
     $user1->setAccount($account);
     $user2 = new User();
     $user2->setUsername('user2');
     $user2->setPassword('changeme');
     $user2->setAccount($account);
     $user3 = new User();
     $user3->setUsername('user3');
     $user3->setPassword('changeme');
     $user3->setAccount($account);
     $this->dm->persist($user1);
     $this->dm->persist($user2);
     $this->dm->persist($user3);
     $this->dm->flush();
     $this->dm->clear();
     unset($user1, $user2, $user3);
     $user = $this->dm->find('Documents\\CustomUser', 'userId');
     $this->assertNotNull($user);
     $this->assertEquals('userId', $user->getId());
     $this->assertEquals('user1', $user->getUsername());
     $this->dm->clear();
     unset($user);
     $this->assertNull($this->dm->find('Documents\\User', 'userId'));
     $this->assertNull($this->dm->find('Documents\\CustomUser', 'asd'));
 }
示例#25
0
$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();
 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()));
 }