ldc-boutique-cnc-sable/tests/Unit/App/Actions/Common/ExecuteMassActionInputTest.php

47 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
use App\Actions\Common\ExecuteMassActionInput;
use App\Enums\MassActionType;
use App\Models\Product;
describe('ExecuteMassActionInput', function (): void {
it('accepts a valid list of model ids for a supported action', function (): void {
// GIVEN
$modelClass = Product::class;
// WHEN
$input = new ExecuteMassActionInput(
modelClass: $modelClass,
action: MassActionType::Publish,
modelKeyList: [1, 2, 3],
);
// THEN
expect($input->modelClass)->toBe($modelClass)
->and($input->action)->toBe(MassActionType::Publish)
->and($input->modelKeyList)->toBe([1, 2, 3]);
});
it('rejects a non-Eloquent model class', function (): void {
// GIVEN
$invalidModelClass = \stdClass::class;
// WHEN & THEN
expect(fn () => new ExecuteMassActionInput(
modelClass: $invalidModelClass,
action: MassActionType::Star,
modelKeyList: [1],
))->toThrow(\InvalidArgumentException::class);
});
it('rejects an empty model key list', function (): void {
// WHEN & THEN
expect(fn () => new ExecuteMassActionInput(
modelClass: Product::class,
action: MassActionType::Unstar,
modelKeyList: [],
))->toThrow(\InvalidArgumentException::class);
});
});