search and export from invoice archive (#2408)

This commit is contained in:
Kevin Papst
2021-03-10 01:50:27 +01:00
committed by GitHub
parent c34e9f576d
commit db1344573f
22 changed files with 544 additions and 72 deletions

View File

@@ -13,6 +13,7 @@ use App\Entity\Activity;
use App\Entity\Customer;
use App\Entity\Project;
use App\Entity\Team;
use App\Form\Model\DateRange;
use App\Repository\Query\ActivityQuery;
use App\Repository\Query\BaseQuery;
use App\Repository\Query\ProjectQuery;
@@ -63,12 +64,12 @@ class BaseQueryTest extends TestCase
self::assertNull($sut->getSearchTerm());
}
protected function assertBaseQuery(BaseQuery $sut, $orderBy = 'id')
protected function assertBaseQuery(BaseQuery $sut, $orderBy = 'id', $order = BaseQuery::ORDER_ASC)
{
$this->assertPage($sut);
$this->assertPageSize($sut);
$this->assertOrderBy($sut, $orderBy);
$this->assertOrder($sut);
$this->assertOrder($sut, $order);
$this->assertTeams($sut);
}
@@ -275,4 +276,29 @@ class BaseQueryTest extends TestCase
$this->assertEquals(99, $sut->getProject());
$this->assertEquals([99], $sut->getProjects());
}
protected function assertDateRangeTrait($sut)
{
self::assertNull($sut->getBegin());
self::assertNull($sut->getEnd());
$dateRange = new DateRange();
$sut->setDateRange($dateRange);
self::assertSame($dateRange, $sut->getDateRange());
self::assertNull($sut->getBegin());
self::assertNull($sut->getEnd());
$begin = new \DateTime('2013-11-23 13:45:07');
$end = new \DateTime('2014-01-01 23:45:11');
$dateRange->setBegin($begin);
$dateRange->setEnd($end);
self::assertSame($begin, $sut->getDateRange()->getBegin());
/* @phpstan-ignore-next-line */
self::assertSame($begin, $sut->getBegin());
self::assertSame($end, $sut->getDateRange()->getEnd());
/* @phpstan-ignore-next-line */
self::assertSame($end, $sut->getEnd());
}
}

View File

@@ -0,0 +1,45 @@
<?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\Query;
use App\Entity\Customer;
use App\Entity\Invoice;
use App\Repository\Query\BaseQuery;
use App\Repository\Query\InvoiceArchiveQuery;
/**
* @covers \App\Repository\Query\InvoiceArchiveQuery
*/
class InvoiceArchiveQueryTest extends BaseQueryTest
{
public function testQuery()
{
$sut = new InvoiceArchiveQuery();
self::assertFalse($sut->hasStatus());
$this->assertBaseQuery($sut, 'date', BaseQuery::ORDER_DESC);
$this->assertDateRangeTrait($sut);
$this->assertIsArray($sut->getCustomers());
$this->assertEmpty($sut->getCustomers());
self::assertFalse($sut->hasCustomers());
$sut->addCustomer(new Customer());
$sut->setCustomers([new Customer()]);
self::assertCount(2, $sut->getCustomers());
self::assertTrue($sut->hasCustomers());
$sut->addStatus(Invoice::STATUS_PAID);
$sut->setStatus([Invoice::STATUS_PENDING]);
self::assertTrue($sut->hasStatus());
self::assertEquals([Invoice::STATUS_PAID, Invoice::STATUS_PENDING], $sut->getStatus());
$this->assertResetByFormError(new InvoiceArchiveQuery(), 'date', BaseQuery::ORDER_DESC);
}
}

View File

@@ -26,6 +26,7 @@ class TimesheetQueryTest extends BaseQueryTest
$this->assertPageSize($sut);
$this->assertOrderBy($sut, 'begin');
$this->assertOrder($sut, TimesheetQuery::ORDER_DESC);
$this->assertDateRangeTrait($sut);
$this->assertUser($sut);
$this->assertUsers($sut);