Belle gamme

'; $pictureMetadata = new PictureMetadata(); $status = true; // WHEN $input = new CreateRangeInput( name: $name, description: $description, picture: null, pictureMetadata: $pictureMetadata, status: $status, ); // THEN expect($input->name)->toBe($name) ->and($input->description)->toBe($description) ->and($input->picture)->toBeNull() ->and($input->status)->toBeTrue(); }); test('it can be instantiated with valid picture and metadata', function () { // GIVEN $picture = UploadedFile::fake()->image('range.jpg'); $pictureMetadata = new PictureMetadata(alt: 'Image alt', title: 'Image title'); // WHEN $input = new CreateRangeInput( name: 'Gamme Spéciale', description: null, picture: $picture, pictureMetadata: $pictureMetadata, status: false, ); // THEN expect($input->picture)->toBe($picture) ->and($input->pictureMetadata->alt)->toBe('Image alt') ->and($input->pictureMetadata->title)->toBe('Image title'); }); test('it throws when name is empty', function () { // GIVEN $emptyName = ' '; // WHEN & THEN expect(fn () => new CreateRangeInput( name: $emptyName, description: null, picture: null, pictureMetadata: new PictureMetadata(), status: true, ))->toThrow(\InvalidArgumentException::class, 'The range name cannot be empty.'); }); test('it throws when name is shorter than 2 characters', function () { // GIVEN $shortName = 'A'; // WHEN & THEN expect(fn () => new CreateRangeInput( name: $shortName, description: null, picture: null, pictureMetadata: new PictureMetadata(), status: true, ))->toThrow(\InvalidArgumentException::class, 'The range name must be at least 2 characters.'); }); test('it throws when name exceeds 45 characters', function () { // GIVEN $longName = str_repeat('a', 46); // WHEN & THEN expect(fn () => new CreateRangeInput( name: $longName, description: null, picture: null, pictureMetadata: new PictureMetadata(), status: true, ))->toThrow(\InvalidArgumentException::class, 'The range name cannot exceed 45 characters.'); }); test('it throws when picture is provided without alt', function () { // GIVEN $picture = UploadedFile::fake()->image('range.jpg'); $pictureMetadata = new PictureMetadata(alt: null, title: 'Title only'); // WHEN & THEN expect(fn () => new CreateRangeInput( name: 'Gamme', description: null, picture: $picture, pictureMetadata: $pictureMetadata, status: true, ))->toThrow(\InvalidArgumentException::class, 'Picture alt is required when picture is provided.'); }); test('it throws when picture is provided without title', function () { // GIVEN $picture = UploadedFile::fake()->image('range.jpg'); $pictureMetadata = new PictureMetadata(alt: 'Alt only', title: null); // WHEN & THEN expect(fn () => new CreateRangeInput( name: 'Gamme', description: null, picture: $picture, pictureMetadata: $pictureMetadata, status: true, ))->toThrow(\InvalidArgumentException::class, 'Picture title is required when picture is provided.'); }); });