Tests - increase code coverage

This commit is contained in:
Meritoo
2017-11-03 21:13:47 +01:00
parent edc51aeee1
commit 8bcf006e02
9 changed files with 777 additions and 123 deletions

View File

@@ -33,6 +33,10 @@ class QueryBuilderUtility
{
$aliases = $queryBuilder->getRootAliases();
/*
* No aliases?
* Nothing to do
*/
if (empty($aliases)) {
return null;
}
@@ -42,7 +46,8 @@ class QueryBuilderUtility
/**
* Returns alias of given property joined in given query builder
* If the join does not exist, null is returned.
*
* If there are no joins or the join does not exist, null is returned.
* It's also information if given property is already joined in given query builder.
*
* @param QueryBuilder $queryBuilder The query builder to verify
@@ -53,6 +58,10 @@ class QueryBuilderUtility
{
$joins = $queryBuilder->getDQLPart('join');
/*
* No joins?
* Nothing to do
*/
if (empty($joins)) {
return null;
}
@@ -99,33 +108,43 @@ class QueryBuilderUtility
*/
public static function setCriteria(QueryBuilder $queryBuilder, array $criteria = [], $alias = '')
{
if (!empty($criteria)) {
if (empty($alias)) {
$alias = self::getRootAlias($queryBuilder);
}
/*
* No criteria used in WHERE clause?
* Nothing to do
*/
if (empty($criteria)) {
return $queryBuilder;
}
foreach ($criteria as $column => $value) {
$compareOperator = '=';
/*
* No alias provided?
* Let's use root alias
*/
if (empty($alias)) {
$alias = self::getRootAlias($queryBuilder);
}
if (is_array($value) && !empty($value)) {
if (2 == count($value)) {
$compareOperator = $value[1];
}
foreach ($criteria as $column => $value) {
$compareOperator = '=';
$value = $value[0];
if (is_array($value) && !empty($value)) {
if (2 == count($value)) {
$compareOperator = $value[1];
}
$predicate = sprintf('%s.%s %s :%s', $alias, $column, $compareOperator, $column);
if (null === $value) {
$predicate = $queryBuilder->expr()->isNull(sprintf('%s.%s', $alias, $column));
unset($criteria[$column]);
} else {
$queryBuilder->setParameter($column, $value);
}
$queryBuilder = $queryBuilder->andWhere($predicate);
$value = $value[0];
}
$predicate = sprintf('%s.%s %s :%s', $alias, $column, $compareOperator, $column);
if (null === $value) {
$predicate = $queryBuilder->expr()->isNull(sprintf('%s.%s', $alias, $column));
unset($criteria[$column]);
} else {
$queryBuilder->setParameter($column, $value);
}
$queryBuilder = $queryBuilder->andWhere($predicate);
}
return $queryBuilder;
@@ -143,7 +162,7 @@ class QueryBuilderUtility
public static function deleteEntities(EntityManager $entityManager, $entities, $flushDeleted = true)
{
/*
* No entities found?
* No entities provided?
* Nothing to do
*/
if (empty($entities)) {
@@ -169,24 +188,30 @@ class QueryBuilderUtility
* Attention. Existing parameters will be overridden.
*
* @param QueryBuilder $queryBuilder The query builder
* @param array|ArrayCollection $parameters Parameters to add. Collection of instances of
* Doctrine\ORM\Query\Parameter class or an array with key-value pairs.
* @param array|ArrayCollection $parameters Parameters to add. Collection of Doctrine\ORM\Query\Parameter
* instances or an array with key-value pairs.
* @return QueryBuilder
*/
public static function addParameters(QueryBuilder $queryBuilder, $parameters)
{
if (!empty($parameters)) {
foreach ($parameters as $key => $parameter) {
$name = $key;
$value = $parameter;
/*
* No parameters?
* Nothing to do
*/
if (empty($parameters)) {
return $queryBuilder;
}
if ($parameter instanceof Parameter) {
$name = $parameter->getName();
$value = $parameter->getValue();
}
foreach ($parameters as $key => $parameter) {
$name = $key;
$value = $parameter;
$queryBuilder->setParameter($name, $value);
if ($parameter instanceof Parameter) {
$name = $parameter->getName();
$value = $parameter->getValue();
}
$queryBuilder->setParameter($name, $value);
}
return $queryBuilder;