Skip to content

Commit

Permalink
Fixed CH zip codes allowed leading zero (#33)
Browse files Browse the repository at this point in the history
  • Loading branch information
Toflar authored and barbieswimcrew committed Jun 27, 2019
1 parent ba85b09 commit 364fcb0
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/ZipCodeValidator/Constraints/ZipCodeValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class ZipCodeValidator extends ConstraintValidator
'BY' => '\\d{6}',
'CA' => '[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d',
'CC' => '6799',
'CH' => '\\d{4}',
'CH' => '[1-9]\\d{3}',
'CL' => '\\d{7}',
'CN' => '\\d{6}',
'CO' => '\\d{6}',
Expand Down
97 changes: 97 additions & 0 deletions tests/Constraints/ChZipCodeValidatorTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
<?php

use Symfony\Component\Validator\Context\ExecutionContext;
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
use Symfony\Component\Validator\Violation\ConstraintViolationBuilderInterface;
use ZipCodeValidator\Constraints\ZipCode;
use ZipCodeValidator\Constraints\ZipCodeValidator;

class ChZipCodeValidatorTest extends \PHPUnit\Framework\TestCase
{
/** @var ZipCodeValidator */
protected $validator;

public function setUp()
{
$this->validator = new ZipCodeValidator;
}

/**
* @dataProvider chValidZipCodes
* @param string $zipCode
*/
public function testValidationOfChZipCode($zipCode)
{
$constraint = new ZipCode('CH');

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

//be sure that buildViolation never gets called
$contextMock->expects($this->never())->method('buildViolation');

$contextMock->setConstraint($constraint);
$this->validator->initialize($contextMock);

// Test some variations
$this->validator->validate($zipCode, $constraint);
}

/**
* @return array
*/
public function chValidZipCodes()
{
return [
['1000'],
['3000'],
['3250'],
['9658'],
];
}

/**
* @dataProvider chInvalidZipCodes
* @param string $zipcode
*/
public function testValidationErrorWithInvalidChZipCode($zipcode)
{
$constraint = new ZipCode('CH');

$violationBuilderMock = $this->getMockBuilder(ConstraintViolationBuilderInterface::class)
->disableOriginalConstructor()
->getMock();
$violationBuilderMock->expects($this->once())->method('setParameter')->willReturnSelf();

/** @var ExecutionContext|PHPUnit_Framework_MockObject_MockObject $contextMock */
$contextMock = $this->getMockBuilder(ExecutionContext::class)
->disableOriginalConstructor()
->getMock();
$contextMock->expects($this->exactly(1))
->method('buildViolation')
->with($constraint->message)
->willReturn($violationBuilderMock);

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

/**
* @return array
*/
public function chInvalidZipCodes()
{
return [
['0000'],
['0099'],
['024567'],
['ch128'],
['2-341'],
];
}


}

0 comments on commit 364fcb0

Please sign in to comment.