ldc-mesbr-app/tests/Unit/Domain/Models/ValueObjects/Coupon/CouponPictureTest.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'],
]);
});