mirror of
https://github.com/egulias/EmailValidator.git
synced 2026-08-30 03:59:20 +00:00
Psalm errors plus test for MultipleErrors reason and improved multi validation tests
This commit is contained in:
@@ -11,6 +11,9 @@ use Egulias\EmailValidator\Result\Reason\ExpectingATEXT;
|
||||
|
||||
class LocalComment implements CommentStrategy
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $warnings = [];
|
||||
|
||||
public function exitCondition(EmailLexer $lexer, int $openedParenthesis) : bool
|
||||
|
||||
@@ -15,6 +15,10 @@ use Egulias\EmailValidator\Result\Reason\ExpectingATEXT;
|
||||
class LocalPart extends Parser
|
||||
{
|
||||
|
||||
/**
|
||||
* Invalid lexer tokens for local part
|
||||
* @var array
|
||||
*/
|
||||
private $invalidTokens = array(
|
||||
EmailLexer::S_COMMA => EmailLexer::S_COMMA,
|
||||
EmailLexer::S_CLOSEBRACKET => EmailLexer::S_CLOSEBRACKET,
|
||||
@@ -91,7 +95,6 @@ class LocalPart extends Parser
|
||||
|
||||
private function parseLocalFWS() : Result
|
||||
{
|
||||
//use $this->parseFWS()
|
||||
$foldingWS = new FoldingWhiteSpace($this->lexer);
|
||||
$resultFWS = $foldingWS->parse();
|
||||
if ($resultFWS->isValid()) {
|
||||
|
||||
@@ -18,7 +18,7 @@ class MultipleErrors extends InvalidEmail
|
||||
|
||||
public function addReason(Reason $reason)
|
||||
{
|
||||
$this->errors[$reason->code()] = $reason;
|
||||
$this->reasons[$reason->code()] = $reason;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
namespace Egulias\EmailValidator\Tests\EmailValidator\Dummy;
|
||||
|
||||
use Egulias\EmailValidator\Result\Reason\Reason;
|
||||
|
||||
class AnotherDummyReason implements Reason
|
||||
{
|
||||
public function code() : int
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
public function description() : string
|
||||
{
|
||||
return 'Dummy Reason';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace Egulias\EmailValidator\Tests\EmailValidator\Reason;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Egulias\EmailValidator\Result\MultipleErrors;
|
||||
use Egulias\EmailValidator\Tests\EmailValidator\Dummy\AnotherDummyReason;
|
||||
use Egulias\EmailValidator\Tests\EmailValidator\Dummy\DummyReason;
|
||||
|
||||
class MultipleErrorsTests extends TestCase
|
||||
{
|
||||
public function testRegisterSameReason()
|
||||
{
|
||||
$error1 = new DummyReason();
|
||||
$error2 = new DummyReason();
|
||||
|
||||
$multiError = new MultipleErrors();
|
||||
$multiError->addReason($error1);
|
||||
$multiError->addReason($error2);
|
||||
|
||||
$this->assertCount(1, $multiError->getReasons());
|
||||
}
|
||||
|
||||
public function testRegisterDifferentReasons()
|
||||
{
|
||||
$error1 = new DummyReason();
|
||||
$error2 = new AnotherDummyReason();
|
||||
|
||||
$multiError = new MultipleErrors();
|
||||
$multiError->addReason($error1);
|
||||
$multiError->addReason($error2);
|
||||
|
||||
$this->assertCount(2, $multiError->getReasons());
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ use PHPUnit\Framework\TestCase;
|
||||
use Egulias\EmailValidator\EmailLexer;
|
||||
use Egulias\EmailValidator\Result\InvalidEmail;
|
||||
use Egulias\EmailValidator\Result\MultipleErrors;
|
||||
use Egulias\EmailValidator\Tests\EmailValidator\Dummy\AnotherDummyReason;
|
||||
use Egulias\EmailValidator\Warning\DomainLiteral;
|
||||
use Egulias\EmailValidator\Warning\AddressLiteral;
|
||||
use Egulias\EmailValidator\Validation\RFCValidation;
|
||||
@@ -85,9 +86,10 @@ class MultipleValidationWithAndTest extends TestCase
|
||||
public function testGathersAllTheErrors()
|
||||
{
|
||||
$invalidEmail = new InvalidEmail(new DummyReason(), '');
|
||||
$invalidEmail2 = new InvalidEmail(new AnotherDummyReason(), '');
|
||||
|
||||
$error1 = new DummyReason();
|
||||
$error2 = new DummyReason();
|
||||
$error2 = new AnotherDummyReason();
|
||||
|
||||
$expectedResult = new MultipleErrors();
|
||||
$expectedResult->addReason($error1);
|
||||
@@ -103,7 +105,7 @@ class MultipleValidationWithAndTest extends TestCase
|
||||
$validation2 = $this->getMockBuilder(EmailValidation::class)->getMock();
|
||||
$validation2->expects($this->once())->method("isValid")->willReturn(false);
|
||||
$validation2->expects($this->once())->method("getWarnings")->willReturn([]);
|
||||
$validation2->expects($this->exactly(2))->method("getError")->willReturn($invalidEmail);
|
||||
$validation2->expects($this->exactly(2))->method("getError")->willReturn($invalidEmail2);
|
||||
|
||||
$multipleValidation = new MultipleValidationWithAnd([$validation1, $validation2]);
|
||||
$multipleValidation->isValid("example@example.com", $lexer);
|
||||
@@ -113,13 +115,12 @@ class MultipleValidationWithAndTest extends TestCase
|
||||
public function testStopsAfterFirstError()
|
||||
{
|
||||
$invalidEmail = new InvalidEmail(new DummyReason(), '');
|
||||
$invalidEmail2 = new InvalidEmail(new AnotherDummyReason(), '');
|
||||
|
||||
$error1 = new DummyReason();
|
||||
$error2 = new DummyReason();
|
||||
|
||||
$expectedResult = new MultipleErrors();
|
||||
$expectedResult->addReason($error1);
|
||||
$expectedResult->addReason($error2);
|
||||
|
||||
$lexer = new EmailLexer();
|
||||
|
||||
@@ -131,7 +132,7 @@ class MultipleValidationWithAndTest extends TestCase
|
||||
$validation2 = $this->getMockBuilder(EmailValidation::class)->getMock();
|
||||
$validation2->expects($this->any())->method("isValid")->willReturn(false);
|
||||
$validation2->expects($this->never())->method("getWarnings")->willReturn([]);
|
||||
$validation1->expects($this->exactly(2))->method("getError")->willReturn($invalidEmail);
|
||||
$validation1->expects($this->exactly(2))->method("getError")->willReturn($invalidEmail2);
|
||||
|
||||
$multipleValidation = new MultipleValidationWithAnd([$validation1, $validation2], MultipleValidationWithAnd::STOP_ON_ERROR);
|
||||
$multipleValidation->isValid("example@example.com", $lexer);
|
||||
|
||||
Reference in New Issue
Block a user