diff --git a/src/Adapter/Doctrine/Event/ORMAdapterQueryEvent.php b/src/Adapter/Doctrine/Event/ORMAdapterQueryEvent.php index 08d86db2..5a6fe3ac 100644 --- a/src/Adapter/Doctrine/Event/ORMAdapterQueryEvent.php +++ b/src/Adapter/Doctrine/Event/ORMAdapterQueryEvent.php @@ -20,12 +20,8 @@ */ class ORMAdapterQueryEvent extends Event { - /** @var Query */ - protected $query; + protected Query $query; - /** - * ORMAdapterQueryEvent constructor. - */ public function __construct(Query $query) { $this->query = $query; diff --git a/src/Column/DateTimeColumn.php b/src/Column/DateTimeColumn.php index 2ddde89f..aa839c11 100644 --- a/src/Column/DateTimeColumn.php +++ b/src/Column/DateTimeColumn.php @@ -34,7 +34,7 @@ public function normalize(mixed $value): mixed if (false === ($errors = \DateTime::getLastErrors())) { throw new \LogicException('DateTime conversion failed for unknown reasons'); } - throw new \Exception(implode(', ', $errors['errors'] ?: $errors['warnings'])); + throw new \RuntimeException(implode(', ', $errors['errors'] ?: $errors['warnings'])); } } else { $value = new \DateTime((string) $value); diff --git a/tests/Unit/ColumnTest.php b/tests/Unit/ColumnTest.php index 1af4c9c9..43ba5157 100644 --- a/tests/Unit/ColumnTest.php +++ b/tests/Unit/ColumnTest.php @@ -43,6 +43,14 @@ public function testDateTimeColumn(): void $this->assertSame('03-04-2015', $column->transform('2015-04-03')); $this->assertSame('foo', $column->transform(null)); + + $column->initialize('test', 1, [ + 'createFromFormat' => 'foo', + ], $this->createDataTable()->setName('foo')); + + $this->expectException(\RuntimeException::class); + $this->expectExceptionMessage('format separator does not match'); + $column->transform('2015-04-03'); } public function testDateTimeColumnWithCreateFromFormat(): void @@ -118,6 +126,9 @@ public function testNumberColumn(): void $this->assertFalse($column->isRaw()); $this->assertTrue($column->isValidForSearch(684)); $this->assertFalse($column->isValidForSearch('foo.bar')); + + // Forced conversion failure + $this->assertSame('0', $column->normalize('foo')); } public function testColumnWithClosures(): void @@ -136,6 +147,33 @@ public function testColumnWithClosures(): void $this->assertSame('BAR', $column->transform(null)); } + public function testLeftRightExprColumns(): void + { + $column = new TextColumn(); + $column->initialize('test', 1, [ + 'leftExpr' => 'foo', + 'rightExpr' => 'bar', + ], $this->createDataTable()); + + $this->assertSame('foo', $column->getLeftExpr()); + $this->assertSame('bar', $column->getRightExpr('fud')); + + $column->initialize('test', 1, [ + 'field' => 'foo', + 'leftExpr' => fn (string $field) => $field . 'bar', + 'rightExpr' => fn (string $field) => $field . 'baz', + ], $this->createDataTable()); + + $this->assertSame('foobar', $column->getLeftExpr()); + $this->assertSame('fudbaz', $column->getRightExpr('fud')); + + $column->initialize('test', 1, [ + 'rightExpr' => null, + ], $this->createDataTable()); + + $this->assertSame('foo', $column->getRightExpr('foo')); + } + public function testTwigDependencyDetection(): void { $this->expectException(MissingDependencyException::class); diff --git a/tests/Unit/DataTableTest.php b/tests/Unit/DataTableTest.php index dcc11b4e..7b7a481e 100644 --- a/tests/Unit/DataTableTest.php +++ b/tests/Unit/DataTableTest.php @@ -106,6 +106,9 @@ public function testDataTableState(): void $this->assertSame(0, $state->getStart()); $this->assertNull($state->getLength()); + + $column = $datatable->getColumn(0); + $this->assertSame($state, $column->getState()); } public function testPostMethod(): void