99 lines
2.7 KiB
PHP
99 lines
2.7 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
use App\Actions\Pages\UpdatePageInput;
|
||
|
|
use App\Models\Page;
|
||
|
|
use Domain\Models\ValueObjects\SeoMetadata;
|
||
|
|
|
||
|
|
describe('UpdatePageInput', function (): void {
|
||
|
|
it('creates a valid UpdatePageInput instance', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$page = new Page();
|
||
|
|
$seo = new SeoMetadata('Titre SEO valide', 'Description SEO valide');
|
||
|
|
$title = 'Titre de page';
|
||
|
|
$content = '<p>Contenu HTML de la page</p>';
|
||
|
|
|
||
|
|
// WHEN
|
||
|
|
$input = new UpdatePageInput(
|
||
|
|
page: $page,
|
||
|
|
seo: $seo,
|
||
|
|
title: $title,
|
||
|
|
content: $content,
|
||
|
|
);
|
||
|
|
|
||
|
|
// THEN
|
||
|
|
expect($input->page)->toBe($page)
|
||
|
|
->and($input->seo)->toBe($seo)
|
||
|
|
->and($input->title)->toBe($title)
|
||
|
|
->and($input->content)->toBe($content);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('allows null title', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$page = new Page();
|
||
|
|
$seo = new SeoMetadata('Titre SEO valide', 'Description SEO valide');
|
||
|
|
$content = '<p>Contenu HTML</p>';
|
||
|
|
|
||
|
|
// WHEN
|
||
|
|
$input = new UpdatePageInput(
|
||
|
|
page: $page,
|
||
|
|
seo: $seo,
|
||
|
|
title: null,
|
||
|
|
content: $content,
|
||
|
|
);
|
||
|
|
|
||
|
|
// THEN
|
||
|
|
expect($input->title)->toBeNull();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('throws when title is empty string', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$page = new Page();
|
||
|
|
$seo = new SeoMetadata('Titre SEO valide', 'Description SEO valide');
|
||
|
|
|
||
|
|
// WHEN
|
||
|
|
expect(fn () => new UpdatePageInput(
|
||
|
|
page: $page,
|
||
|
|
seo: $seo,
|
||
|
|
title: ' ',
|
||
|
|
content: '<p>Contenu</p>',
|
||
|
|
))
|
||
|
|
// THEN
|
||
|
|
->toThrow(\InvalidArgumentException::class);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('throws when title exceeds 255 characters', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$page = new Page();
|
||
|
|
$seo = new SeoMetadata('Titre SEO valide', 'Description SEO valide');
|
||
|
|
$longTitle = str_repeat('a', 256);
|
||
|
|
|
||
|
|
// WHEN
|
||
|
|
expect(fn () => new UpdatePageInput(
|
||
|
|
page: $page,
|
||
|
|
seo: $seo,
|
||
|
|
title: $longTitle,
|
||
|
|
content: '<p>Contenu</p>',
|
||
|
|
))
|
||
|
|
// THEN
|
||
|
|
->toThrow(\InvalidArgumentException::class);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('throws when content is empty', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$page = new Page();
|
||
|
|
$seo = new SeoMetadata('Titre SEO valide', 'Description SEO valide');
|
||
|
|
|
||
|
|
// WHEN
|
||
|
|
expect(fn () => new UpdatePageInput(
|
||
|
|
page: $page,
|
||
|
|
seo: $seo,
|
||
|
|
title: 'Titre',
|
||
|
|
content: ' ',
|
||
|
|
))
|
||
|
|
// THEN
|
||
|
|
->toThrow(\InvalidArgumentException::class);
|
||
|
|
});
|
||
|
|
});
|