Skip to content

Commit

Permalink
Added correct validation for Jamaica (#35)
Browse files Browse the repository at this point in the history
  • Loading branch information
aschempp authored and barbieswimcrew committed Jun 28, 2019
1 parent 364fcb0 commit af4db83
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/ZipCodeValidator/Constraints/ZipCodeValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ class ZipCodeValidator extends ConstraintValidator
'IS' => '\\d{3}',
'IT' => '\\d{5}',
'JE' => 'JE\\d[\\dA-Z]? ?\\d[ABD-HJLN-UW-Z]{2}',
'JM' => '[\\a-zA-Z]{2}',
'JM' => '[a-zA-Z]{2}',
'JO' => '\\d{5}',
'JP' => '\\d{3}-?\\d{4}',
'KE' => '\\d{5}',
Expand Down
48 changes: 45 additions & 3 deletions tests/Constraints/JmZipCodeValidatorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ public function setUp()
/**
* This test verifies that all known Jamaica codes are valid.
*
* @dataProvider getJamaicaZipCodes
* @dataProvider getValidJamaicaZipCodes
* @test
* @param string $zipCode
*/
public function testZipcodes($zipCode)
public function testValidZipcodes($zipCode)
{
$constraint = new ZipCode('JM');

Expand All @@ -55,7 +55,7 @@ public function testZipcodes($zipCode)
*
* @return array
*/
public function getJamaicaZipCodes()
public function getValidJamaicaZipCodes()
{
return [
['KN'],
Expand All @@ -67,4 +67,46 @@ public function getJamaicaZipCodes()
];
}

/**
* This test verifies that all known Jamaica codes are valid.
*
* @dataProvider getInvalidJamaicaZipCodes
* @test
* @param string $zipCode
*/
public function testInvalidZipcodes($zipCode)
{
$constraint = new ZipCode('JM');

$violation = $this->createMock(ConstraintViolationBuilderInterface::class);
$violation->expects($this->once())->method('setParameter')->willReturnSelf();

/** @var ExecutionContext|PHPUnit_Framework_MockObject_MockObject $contextMock */
$contextMock = $this->getMockBuilder(ExecutionContext::class)
->disableOriginalConstructor()
->getMock();

# be sure that buildViolation never gets called
$contextMock->expects($this->once())->method('buildViolation')->willReturn($violation);
$contextMock->setConstraint($constraint);

$this->validator->initialize($contextMock);
$this->validator->validate($zipCode, $constraint);
}

/**
* used postal codes
* from https://en.wikipedia.org/wiki/Postal_codes_in_Jamaica
*
* @return array
*/
public function getInvalidJamaicaZipCodes()
{
return [
['12'],
['\W'],
['A1'],
['0z'],
];
}
}

0 comments on commit af4db83

Please sign in to comment.