refactored repositories and DB queries (#5026)

* removed unused teams from export order
* added new paginator for query instead of querybuilder
* added field hydrate enums
* hide PARTIAL deprecation
* never log deprecations in production
* replaced InvoiceLoader with native Doctrine feature
* prevent excessive permission queries
* support loading customers of team
* improved findByIds
* internalized API
* fix null string deprecations
This commit is contained in:
Kevin Papst
2024-08-27 10:11:19 +02:00
committed by GitHub
parent 9e3d243b4b
commit 9d933f62c0
81 changed files with 1648 additions and 1436 deletions

View File

@@ -10,6 +10,7 @@
namespace App\Tests\Repository\Loader;
use App\Entity\Activity;
use App\Entity\Project;
use App\Repository\Loader\ActivityLoader;
/**
@@ -19,12 +20,15 @@ class ActivityLoaderTest extends AbstractLoaderTest
{
public function testLoadResults(): void
{
$em = $this->getEntityManagerMock(3);
$sut = new ActivityLoader($em);
$project = $this->createMock(Project::class);
$project->expects($this->once())->method('getId')->willReturn(13);
$entity = $this->createMock(Activity::class);
$entity->expects($this->once())->method('getId')->willReturn(1);
$entity->expects($this->exactly(3))->method('getProject')->willReturn($project);
$em = $this->getEntityManagerMock(3);
$sut = new ActivityLoader($em);
$sut->loadResults([$entity]);
}

View File

@@ -11,6 +11,7 @@ namespace App\Tests\Repository\Loader;
use App\Entity\Customer;
use App\Repository\Loader\CustomerLoader;
use App\Repository\Query\CustomerQuery;
/**
* @covers \App\Repository\Loader\CustomerLoader
@@ -19,13 +20,15 @@ class CustomerLoaderTest extends AbstractLoaderTest
{
public function testLoadResults(): void
{
$em = $this->getEntityManagerMock(2);
$em = $this->getEntityManagerMock(1);
$sut = new CustomerLoader($em);
$query = new CustomerQuery();
$query->loadTeams();
$sut = new CustomerLoader($em, $query);
$entity = $this->createMock(Customer::class);
$entity->expects($this->once())->method('getId')->willReturn(1);
$sut->loadResults([$entity, 4711]);
$sut->loadResults([$entity]);
}
}

View File

@@ -1,29 +0,0 @@
<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Tests\Repository\Loader;
use App\Repository\Loader\DefaultLoader;
use PHPUnit\Framework\TestCase;
/**
* @covers \App\Repository\Loader\DefaultLoader
*/
class DefaultLoaderTest extends TestCase
{
public function testLoadResults(): void
{
$sut = new DefaultLoader();
$input = [];
$sut->loadResults($input);
self::assertEquals([], $input);
}
}

View File

@@ -1,31 +0,0 @@
<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Tests\Repository\Loader;
use App\Entity\Invoice;
use App\Repository\Loader\InvoiceLoader;
/**
* @covers \App\Repository\Loader\InvoiceLoader
*/
class InvoiceLoaderTest extends AbstractLoaderTest
{
public function testLoadResults(): void
{
$em = $this->getEntityManagerMock(3);
$sut = new InvoiceLoader($em);
$entity = $this->createMock(Invoice::class);
$entity->expects($this->once())->method('getId')->willReturn(1);
$sut->loadResults([$entity]);
}
}

View File

@@ -25,13 +25,13 @@ class ProjectLoaderTest extends AbstractLoaderTest
$entity = $this->createMock(Project::class);
$entity->expects($this->once())->method('getId')->willReturn(1);
$entity->expects($this->once())->method('getCustomer')->willReturn($customer);
$entity->expects($this->exactly(2))->method('getCustomer')->willReturn($customer);
$results = [$entity];
$em = $this->getEntityManagerMock(4, $results);
$em = $this->getEntityManagerMock(2, $results);
$sut = new ProjectLoader($em);
$sut->loadResults([$entity, 4711]);
$sut->loadResults([$entity]);
}
}