ldc-boutique-cnc-sable/tests/Unit/App/Actions/Common/ChangeModelOrderPositionInputTest.php
Jérémy Munsch 8e42639134
feat(order): implement change selected order functionality
Add functionality to change the order of models in the product list.
This includes new actions, requests, and UI components for user interaction.
2026-10-29 16:39:23 +01:00

50 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
use App\Actions\Common\ChangeModelOrderPositionInput;
use App\Interfaces\ModelWithOrder;
use Illuminate\Database\Eloquent\Model;
describe('ChangeModelOrderPositionInput', function (): void {
it('can be instantiated with a model implementing ModelWithOrder and a valid target order', function (): void {
// GIVEN
$mock = new class () extends Model implements ModelWithOrder
{
public function getOrder(): int
{
return 1;
}
public function setOrder(int $order): void
{
}
};
// WHEN
$input = new ChangeModelOrderPositionInput(model: $mock, targetOrder: 5);
// THEN
expect($input->model)->toBe($mock)
->and($input->targetOrder)->toBe(5);
});
it('throws when target order is less than 1', function (): void {
// GIVEN
$mock = new class () extends Model implements ModelWithOrder
{
public function getOrder(): int
{
return 1;
}
public function setOrder(int $order): void
{
}
};
// WHEN & THEN
expect(fn () => new ChangeModelOrderPositionInput(model: $mock, targetOrder: 0))
->toThrow(\InvalidArgumentException::class);
});
});