diff --git a/src/Result/MultipleErrors.php b/src/Result/MultipleErrors.php index 24bf5ff..5fa85af 100644 --- a/src/Result/MultipleErrors.php +++ b/src/Result/MultipleErrors.php @@ -2,7 +2,7 @@ namespace Egulias\EmailValidator\Result; -use Egulias\EmailValidator\Result\InvalidEmail; +use Egulias\EmailValidator\Result\Reason\EmptyReason; use Egulias\EmailValidator\Result\Reason\Reason; /** @@ -34,7 +34,9 @@ class MultipleErrors extends InvalidEmail public function reason() : Reason { - return $this->reasons[0]; + return 0 !== count($this->reasons) + ? current($this->reasons) + : new EmptyReason(); } public function description() : string diff --git a/src/Result/Reason/EmptyReason.php b/src/Result/Reason/EmptyReason.php new file mode 100644 index 0000000..3016e6f --- /dev/null +++ b/src/Result/Reason/EmptyReason.php @@ -0,0 +1,16 @@ +assertEquals($expectedReason, $multiError->description()); $this->assertEquals($error1, $multiError->reason()); } + + public function testRetrieveFirstReasonWithReasonCodeEqualsZero(): void + { + $error1 = new DummyReason(); + + $multiError = new MultipleErrors(); + $multiError->addReason($error1); + + $this->assertEquals($error1, $multiError->reason()); + } + + public function testRetrieveFirstReasonWithReasonCodeDistinctToZero(): void + { + $error1 = new AnotherDummyReason(); + + $multiError = new MultipleErrors(); + $multiError->addReason($error1); + + $this->assertEquals($error1, $multiError->reason()); + } + + public function testRetrieveFirstReasonWithNoReasonAdded() + { + $emptyReason = new EmptyReason(); + $multiError = new MultipleErrors(); + $this->assertEquals($emptyReason, $multiError->reason()); + } }