store search in session (#2735)

* allow to detect used query filters
* allow to set label in action buttons
* allow to reset last search from session
* migrate invoice archive to new search system
* display number of used search filters
This commit is contained in:
Kevin Papst
2021-08-26 01:37:40 +02:00
committed by GitHub
parent 56524a9773
commit 98a3fc99a2
55 changed files with 365 additions and 81 deletions

View File

@@ -36,6 +36,7 @@ class BaseQueryTest extends TestCase
{
$this->assertBaseQuery(new BaseQuery());
$this->assertResetByFormError(new BaseQuery());
$this->assertFilter(new BaseQuery());
}
/**
@@ -121,6 +122,36 @@ class BaseQueryTest extends TestCase
self::assertSame($team, $sut->getTeams()[0]);
}
protected function assertFilter(BaseQuery $sut)
{
self::assertEquals(0, $sut->countFilter());
$sut->setSearchTerm(new SearchTerm('sdfsdf'));
self::assertEquals(1, $sut->countFilter());
$sut->setPageSize(22);
self::assertEquals(2, $sut->countFilter());
$sut->setPage(2);
self::assertEquals(2, $sut->countFilter());
$sut->setOrderBy('foo');
self::assertEquals(3, $sut->countFilter());
$sut->setOrder(BaseQuery::ORDER_DESC);
self::assertEquals(4, $sut->countFilter());
$sut->setOrder(BaseQuery::ORDER_ASC);
self::assertEquals(3, $sut->countFilter());
$sut->setOrder(BaseQuery::ORDER_DESC);
self::assertEquals(4, $sut->countFilter());
self::assertTrue($sut->matchesFilter('page', 2));
self::assertFalse($sut->isDefaultFilter('page'));
$sut->resetFilter();
self::assertEquals(0, $sut->countFilter());
self::assertEquals(1, $sut->getPage());
self::assertTrue($sut->matchesFilter('page', 1));
self::assertTrue($sut->isDefaultFilter('page'));
self::assertFalse($sut->isDefaultFilter('foo'));
}
protected function assertBookmark(BaseQuery $sut)
{
$bookmark = new Bookmark();
@@ -129,6 +160,9 @@ class BaseQueryTest extends TestCase
$sut->setBookmark($bookmark);
self::assertSame($bookmark, $sut->getBookmark());
self::assertTrue($sut->hasBookmark());
self::assertFalse($sut->isBookmarkSearch());
$sut->flagAsBookmarkSearch();
self::assertTrue($sut->isBookmarkSearch());
}
protected function assertPage(BaseQuery $sut)

View File

@@ -24,14 +24,14 @@ class ExportQueryTest extends TimesheetQueryTest
$this->assertPage($sut);
$this->assertPageSize($sut);
$this->assertOrderBy($sut, 'begin');
$this->assertOrder($sut, ExportQuery::ORDER_DESC);
$this->assertOrder($sut, ExportQuery::ORDER_ASC);
$this->assertUser($sut);
$this->assertCustomer($sut);
$this->assertProject($sut);
$this->assertActivity($sut);
$this->assertState($sut);
$this->assertExported($sut);
$this->assertStateWith($sut, ExportQuery::STATE_STOPPED);
$this->assertExportedWith($sut, ExportQuery::STATE_NOT_EXPORTED);
$this->assertRenderer($sut);
$this->assertMarkAsExported($sut);
}

View File

@@ -24,7 +24,7 @@ class InvoiceQueryTest extends TimesheetQueryTest
$this->assertPage($sut);
$this->assertPageSize($sut);
$this->assertOrderBy($sut, 'begin');
$this->assertOrder($sut, InvoiceQuery::ORDER_DESC);
$this->assertOrder($sut, InvoiceQuery::ORDER_ASC);
$this->assertUser($sut);
$this->assertCustomer($sut);
@@ -35,7 +35,7 @@ class InvoiceQueryTest extends TimesheetQueryTest
self::assertFalse($sut->isRunning());
self::assertTrue($sut->isStopped());
$this->assertExported($sut);
$this->assertExportedWith($sut, InvoiceQuery::STATE_NOT_EXPORTED);
$this->assertMarkAsExported($sut);
$this->assertModifiedAfter($sut);

View File

@@ -98,8 +98,13 @@ class TimesheetQueryTest extends BaseQueryTest
self::assertFalse($sut->isRunning());
self::assertFalse($sut->isStopped());
$this->assertStateWith($sut, TimesheetQuery::STATE_ALL);
}
protected function assertStateWith(TimesheetQuery $sut, int $defaultState)
{
self::assertInstanceOf(TimesheetQuery::class, $sut->setState(PHP_INT_MAX));
self::assertEquals(TimesheetQuery::STATE_ALL, $sut->getState());
self::assertEquals($defaultState, $sut->getState());
$sut->setState(TimesheetQuery::STATE_STOPPED);
self::assertEquals(TimesheetQuery::STATE_STOPPED, $sut->getState());
@@ -121,8 +126,13 @@ class TimesheetQueryTest extends BaseQueryTest
self::assertFalse($sut->isExported());
self::assertFalse($sut->isNotExported());
$this->assertExportedWith($sut, TimesheetQuery::STATE_ALL);
}
protected function assertExportedWith(TimesheetQuery $sut, int $defaultState)
{
self::assertInstanceOf(TimesheetQuery::class, $sut->setExported(PHP_INT_MAX));
self::assertEquals(TimesheetQuery::STATE_ALL, $sut->getExported());
self::assertEquals($defaultState, $sut->getExported());
$sut->setExported(TimesheetQuery::STATE_EXPORTED);
self::assertEquals(TimesheetQuery::STATE_EXPORTED, $sut->getExported());