Example #1
0
 protected function expectRepositoryHydratesNot($identifier)
 {
     $this->repository->expects($this->once())->method('hydrate')->with($this->equalTo($identifier))->will($this->throwException(\Psc\Doctrine\EntityNotFoundException::criteria(array('identifier' => $identifier))));
 }
Example #2
0
 /**
  * Ruft den qbFunction-Hook auf dem QueryBuilder auf und gibt entsprechend ein Result oder den QueryBuilder zurück
  *
  * der Hook kann unterbrechen, dass das Query direkt ausgeführt wird (return) oder bestimmen in welcher Form das Result zurückgegeben werden soll
  * 
  * die qbFunction kann folgende Strings zurückgeben umn das Verhalten von deliverQuery zu steuern:
  *   - return: gibt den QueryBuilder zurück
  *   - result  erstellt das Query und gibt das Ergebnis von query::getResult() zurück
  *   - single  erstellt das Query und gibt das Ergebnis von query::getSingleResult() zurück
  *   - scalar  erstellt das Query und gibt das Ergebnis von query::getScalarResult() zurück
  *
  * die qbFunction erhält nur einen Parameter dies ist der QueryBuilder
  * @param string $returnDefault ist qbFunction nicht gesetzt, wird dies als rückgabe Wert genommen (selbes format wie strings oben)
  * @return mixed
  */
 public function deliverQuery($queryBuilder, $qbFunction, $returnDefault)
 {
     $qbFunction = $this->compileQBFunction($qbFunction);
     $return = $qbFunction($queryBuilder) ?: $returnDefault;
     if ($queryBuilder instanceof \Doctrine\ORM\QueryBuilder) {
         $query = $queryBuilder->getQuery();
     } elseif ($queryBuilder instanceof \Doctrine\ORM\AbstractQuery) {
         $query = $queryBuilder;
     } else {
         throw new \Psc\Exception('Parameter 1 kann nur QueryBuilder oder Query sein.');
     }
     try {
         if ($return === 'return') {
             return $queryBuilder;
         } elseif ($return === 'result') {
             return $query->getResult();
         } elseif ($return === 'single') {
             return $query->getSingleResult();
         } elseif ($return === 'scalar') {
             return $query->getScalarResult();
         } elseif (mb_strtolower($return) === 'singleornull') {
             try {
                 return $query->getSingleResult();
             } catch (\Doctrine\ORM\NoResultException $e) {
                 return NULL;
             }
         } else {
             return $query->getResult();
         }
     } catch (\Doctrine\ORM\Query\QueryException $e) {
         throw new \Psc\Doctrine\QueryException(sprintf("%s \n\nDQL: '%s'", $e->getMessage(), $query->getDQL()));
     } catch (\Doctrine\ORM\NoResultException $e) {
         throw \Psc\Doctrine\EntityNotFoundException::fromQuery($query);
     } catch (\Doctrine\ORM\NonUniqueResultException $e) {
         throw \Psc\Doctrine\EntityNonUniqueResultException::fromQuery($query);
     }
 }
 /**
  * Returns the $revision of the entity with the $parentIdentifier
  *
  * notice that the returned Entity may not have the same identifier as $parentIdentifier
  * @return Entity
  */
 protected function hydrateEntityInRevision($parentIdentifier, $revision)
 {
     $parentIdentifier = $this->v->validateIdentifier($parentIdentifier, $this->getEntityMeta());
     if ($revision === $this->defaultRevision) {
         return $this->repository->hydrate($parentIdentifier);
     } else {
         throw EntityNotFoundException::criteria(compact('parentIdentifier', 'revision'));
     }
 }
 /**
  * Wird der Identifier angegeben schmeisst das Repository eine \Psc\Doctrine\EntityNotFoundException
  * 
  * @return InvocationMockerBuilder
  */
 public function expectDoesNotFind($identifier, $matcher = NULL)
 {
     return $this->buildExpectation('hydrate', $matcher)->with($this->equalTo($identifier))->will($this->throwException(\Psc\Doctrine\EntityNotFoundException::criteria(array('identifier' => $identifier))));
 }