Improved VisitRepository tests

This commit is contained in:
Alejandro Celaya
2021-02-08 22:00:07 +01:00
parent 15061d3e0d
commit 55e7f7ccb0
5 changed files with 64 additions and 7 deletions

View File

@@ -7,13 +7,13 @@ namespace Shlinkio\Shlink\Core\Repository;
use Doctrine\ORM\Query\ResultSetMappingBuilder;
use Doctrine\ORM\QueryBuilder;
use Happyr\DoctrineSpecification\EntitySpecificationRepository;
use Happyr\DoctrineSpecification\Spec;
use Happyr\DoctrineSpecification\Specification\Specification;
use Shlinkio\Shlink\Common\Util\DateRange;
use Shlinkio\Shlink\Core\Entity\ShortUrl;
use Shlinkio\Shlink\Core\Entity\Visit;
use Shlinkio\Shlink\Core\Entity\VisitLocation;
use Shlinkio\Shlink\Rest\ApiKey\Spec\WithApiKeySpecsEnsuringJoin;
use Shlinkio\Shlink\Core\Visit\Spec\CountOfOrphanVisits;
use Shlinkio\Shlink\Core\Visit\Spec\CountOfShortUrlVisits;
use Shlinkio\Shlink\Rest\Entity\ApiKey;
use const PHP_INT_MAX;
@@ -211,9 +211,11 @@ class VisitRepository extends EntitySpecificationRepository implements VisitRepo
public function countVisits(?ApiKey $apiKey = null): int
{
return (int) $this->matchSingleScalarResult(Spec::countOf(Spec::andX(
Spec::isNotNull('shortUrl'),
new WithApiKeySpecsEnsuringJoin($apiKey, 'shortUrl'),
)));
return (int) $this->matchSingleScalarResult(new CountOfShortUrlVisits($apiKey));
}
public function countOrphanVisits(): int
{
return (int) $this->matchSingleScalarResult(new CountOfOrphanVisits());
}
}

View File

@@ -63,4 +63,6 @@ interface VisitRepositoryInterface extends ObjectRepository, EntitySpecification
public function countVisitsByTag(string $tag, ?DateRange $dateRange = null, ?Specification $spec = null): int;
public function countVisits(?ApiKey $apiKey = null): int;
public function countOrphanVisits(): int;
}