44 lines
1.9 KiB
PHP
44 lines
1.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Tests\Unit\Domain\Models\ValueObjects\Coupon;
|
|
|
|
use Domain\Models\ValueObjects\Coupon\CouponPicture;
|
|
use Domain\Models\ValueObjects\PicturePath;
|
|
|
|
covers(CouponPicture::class);
|
|
|
|
describe('coupon picture', function (): void {
|
|
it('builds a picture without reading the files', function (string $extension): void {
|
|
// GIVEN
|
|
$decoration = new PicturePath('files/missing.' . $extension);
|
|
$thumbnail = new PicturePath('files/thumbnail.' . $extension);
|
|
$mobileThumbnail = new PicturePath('files/mobile_thumbnail.' . $extension);
|
|
|
|
// WHEN
|
|
$picture = new CouponPicture($decoration, $thumbnail, $mobileThumbnail);
|
|
|
|
// THEN
|
|
expect($picture->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'],
|
|
]);
|
|
});
|