public function testDistinct() { $user = new User(); $user->setUsername('distinct_test'); $user->setCount(1); $this->dm->persist($user); $user = new User(); $user->setUsername('distinct_test'); $user->setCount(1); $this->dm->persist($user); $user = new User(); $user->setUsername('distinct_test'); $user->setCount(2); $this->dm->persist($user); $user = new User(); $user->setUsername('distinct_test'); $user->setCount(3); $this->dm->persist($user); $this->dm->flush(); $qb = $this->dm->createQueryBuilder('Documents\\User')->distinct('count')->field('username')->equals('distinct_test'); $q = $qb->getQuery(); $results = $q->execute(); $this->assertEquals(new \Doctrine\MongoDB\ArrayIterator(array(1, 2, 3)), $results); $results = $this->dm->createQueryBuilder('Documents\\User')->distinct('count')->field('username')->equals('distinct_test')->getQuery()->execute(); $this->assertEquals(new \Doctrine\MongoDB\ArrayIterator(array(1, 2, 3)), $results); }
public function testAddGroups() { $account = new Account(); $account->setName('Jon Test Account'); $user = new User(); $user->setUsername('jon'); $user->setPassword('changeme'); $user->setAccount($account); $user->setCount(5); $user->addGroup(new Group('administrator')); $user->addGroup(new Group('member')); $user->addGroup(new Group('moderator')); $this->dm->persist($user); $this->persister->expects($this->once())->method('executeInserts'); $this->dm->getUnitOfWork()->computeChangeSets(); $update = $this->persister->prepareUpdateData($user); $this->assertTrue(array_key_exists('$set', $update)); $this->assertFalse(array_key_exists('$unset', $update)); $this->assertTrue(array_key_exists('$pushAll', $update)); $this->assertTrue(array_key_exists('groups', $update['$pushAll'])); $this->assertEquals(3, count($update['$pushAll']['groups'])); $this->assertFalse(array_key_exists('$pullAll', $update)); $this->assertTrue(array_key_exists('$inc', $update)); $this->assertEquals(5, $update['$inc']['count']); $user->setCount(20); $this->dm->getUnitOfWork()->computeChangeSets(); $update = $this->persister->prepareUpdateData($user); $this->assertTrue(array_key_exists('$inc', $update)); $this->assertEquals(15, $update['$inc']['count']); $user->setCount(5); $this->dm->getUnitOfWork()->computeChangeSets(); $update = $this->persister->prepareUpdateData($user); $this->assertTrue(array_key_exists('$inc', $update)); $this->assertEquals(-15, $update['$inc']['count']); $this->dm->flush(); }
public function testMultipleUpdateQuery() { $user = new User(); $user->setUsername('multiple_test'); $user->setCount(1); $this->dm->persist($user); $user = new User(); $user->setUsername('multiple_test'); $user->setCount(1); $this->dm->persist($user); $user = new User(); $user->setUsername('multiple_test'); $user->setCount(2); $this->dm->persist($user); $user = new User(); $user->setUsername('multiple_test'); $user->setCount(3); $this->dm->persist($user); $this->dm->flush(); $qb = $this->dm->createQueryBuilder('Documents\\User')->update()->multiple()->field('username')->equals('multiple_test')->field('username')->set('foo'); $q = $qb->getQuery(); $results = $q->execute(); $qb = $this->dm->createQueryBuilder('Documents\\User')->find()->field('username')->equals('foo'); $q = $qb->getQuery(); $users = array_values($q->execute()->toArray()); $this->assertEquals(4, count($users)); }
public function testIncrementSetsNull() { $user = new User(); $user->setUsername('jon'); $user->setCount(10); $this->dm->persist($user); $this->dm->flush(); $this->dm->clear(); $user = $this->dm->getRepository('Documents\\User')->findOneBy(array('username' => 'jon')); $this->assertEquals(10, $user->getCount()); $user->incrementCount(1); $this->dm->flush(); $this->dm->clear(); $user = $this->dm->getRepository('Documents\\User')->findOneBy(array('username' => 'jon')); $this->assertEquals(11, $user->getCount()); $user->setCount(null); $this->dm->flush(); $this->dm->clear(); $user = $this->dm->getRepository('Documents\\User')->findOneBy(array('username' => 'jon')); $this->assertEquals(null, $user->getCount()); }