decoration)->toBe($decoration) ->and($picture->thumbnail)->toBe($thumbnail) ->and($picture->mobileThumbnail)->toBe($mobileThumbnail); })->with(['jpg', 'jpeg']); it('refuses files that are not jpg', function (string $decoration, string $thumbnail, string $mobileThumbnail, string $invalid): void { // GIVEN $decorationPath = new PicturePath($decoration); $thumbnailPath = new PicturePath($thumbnail); $mobileThumbnailPath = new PicturePath($mobileThumbnail); // WHEN $build = fn (): CouponPicture => new CouponPicture($decorationPath, $thumbnailPath, $mobileThumbnailPath); // THEN expect($build)->toThrow(\DomainException::class, sprintf('Coupon picture "%s" must be a JPG file.', $invalid)); })->with([ 'decoration' => ['files/decoration.png', 'files/thumbnail.jpg', 'files/mobile_thumbnail.jpg', 'files/decoration.png'], 'thumbnail' => ['files/decoration.jpg', 'files/thumbnail.webp', 'files/mobile_thumbnail.jpg', 'files/thumbnail.webp'], 'mobile thumbnail' => ['files/decoration.jpg', 'files/thumbnail.jpg', 'files/mobile_thumbnail.png', 'files/mobile_thumbnail.png'], ]); });