50 lines
1.5 KiB
PHP
50 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Tests\Form\DataTransformer;
|
|
|
|
use App\Form\DataTransformer\RoomSelectionToIdTransformer;
|
|
use App\Form\Model\RoomSelectionDto;
|
|
use PHPUnit\Framework\TestCase;
|
|
use Symfony\Component\Form\Exception\TransformationFailedException;
|
|
|
|
class RoomSelectionToIdTransformerTest extends TestCase
|
|
{
|
|
public function testReverseTransformAcceptsIntegerAndNumericStringIds(): void
|
|
{
|
|
$transformer = new RoomSelectionToIdTransformer([]);
|
|
|
|
self::assertSame(12, $transformer->reverseTransform(12));
|
|
self::assertSame(12, $transformer->reverseTransform('12'));
|
|
}
|
|
|
|
public function testReverseTransformReturnsNullForEmptyValues(): void
|
|
{
|
|
$transformer = new RoomSelectionToIdTransformer([]);
|
|
|
|
self::assertNull($transformer->reverseTransform(null));
|
|
self::assertNull($transformer->reverseTransform(''));
|
|
}
|
|
|
|
public function testReverseTransformRejectsInvalidValues(): void
|
|
{
|
|
$transformer = new RoomSelectionToIdTransformer([]);
|
|
|
|
$this->expectException(TransformationFailedException::class);
|
|
|
|
$transformer->reverseTransform('1.5');
|
|
}
|
|
|
|
public function testTransformReturnsMatchingRoomSelectionDto(): void
|
|
{
|
|
$roomSelection = new RoomSelectionDto();
|
|
$roomSelection->id = 7;
|
|
$roomSelection->label = 'Doppelzimmer';
|
|
|
|
$transformer = new RoomSelectionToIdTransformer([$roomSelection]);
|
|
|
|
self::assertSame($roomSelection, $transformer->transform(7));
|
|
}
|
|
}
|