faq)->toBe($faq) ->and($input->question)->toBe($question) ->and($input->answer)->toBe($answer); }); }); describe('UpdateFaqInput validation rules', function (): void { it('throws when question is empty or too short', function (string $invalidQuestion): void { // GIVEN $faq = new Faq(); $answer = 'Une réponse valide.'; // WHEN expect(fn () => new UpdateFaqInput(faq: $faq, question: $invalidQuestion, answer: $answer)) // THEN ->toThrow(\InvalidArgumentException::class); })->with(['', ' ', 'abc']); it('throws when question exceeds 255 characters', function (): void { // GIVEN $faq = new Faq(); $question = str_repeat('a', 256); $answer = 'Une réponse valide.'; // WHEN expect(fn () => new UpdateFaqInput(faq: $faq, question: $question, answer: $answer)) // THEN ->toThrow(\InvalidArgumentException::class); }); it('throws when answer is empty or too short', function (string $invalidAnswer): void { // GIVEN $faq = new Faq(); $question = 'Une question valide ?'; // WHEN expect(fn () => new UpdateFaqInput(faq: $faq, question: $question, answer: $invalidAnswer)) // THEN ->toThrow(\InvalidArgumentException::class); })->with(['', ' ', 'abc']); });