diff --git a/phpunit.xml b/phpunit.xml index 08db8c0..7463ccf 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -14,7 +14,7 @@ - src/ + tests/ diff --git a/src/Orcamentos/Filter/CNPJMask.php b/src/Orcamentos/Filter/CNPJMask.php new file mode 100644 index 0000000..d4f7573 --- /dev/null +++ b/src/Orcamentos/Filter/CNPJMask.php @@ -0,0 +1,37 @@ +removeMask($cnpj); + + // applying 14 digits + $cnpj = str_pad($cnpj, 14, '0', STR_PAD_LEFT); + + $pattern = "/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/"; + $replacement = "\$1.\$2.\$3/\$4-\$5"; + + return (string)preg_replace($pattern, $replacement, $cnpj); + } +} diff --git a/src/Orcamentos/Model/Client.php b/src/Orcamentos/Model/Client.php index 2cfa0ec..35bf7c2 100644 --- a/src/Orcamentos/Model/Client.php +++ b/src/Orcamentos/Model/Client.php @@ -3,6 +3,7 @@ use Doctrine\ORM\Mapping as ORM; use DateTime; +use Orcamentos\Filter\CNPJMask; /** * @ORM\Entity @@ -91,11 +92,15 @@ public function setName($name) public function getCnpj() { - return $this->cnpj; + $cnpjMask = new CNPJMask(); + return $cnpjMask->applyMask($this->cnpj); } public function setCnpj($cnpj) { + $cnpjMask = new CNPJMask(); + $cnpj = $cnpjMask->removeMask($cnpj); + return $this->cnpj = $cnpj; } diff --git a/src/Orcamentos/Test/ApplicationTestCase.php b/src/Orcamentos/Test/ApplicationTestCase.php index c870e3c..c0f4b3a 100644 --- a/src/Orcamentos/Test/ApplicationTestCase.php +++ b/src/Orcamentos/Test/ApplicationTestCase.php @@ -3,9 +3,8 @@ namespace Orcamentos\Test; use Mockery as m; -use PHPUnit_Framework_TestCase; -class ApplicationTestCase extends PHPUnit_Framework_TestCase +class ApplicationTestCase extends \PHPUnit\Framework\TestCase { protected $repositoryMock; protected $emMock; diff --git a/tests/src/Orcamentos/Filter/CNPJMaskTest.php b/tests/src/Orcamentos/Filter/CNPJMaskTest.php new file mode 100644 index 0000000..f53d099 --- /dev/null +++ b/tests/src/Orcamentos/Filter/CNPJMaskTest.php @@ -0,0 +1,68 @@ + '18.915.219/0001-86', + 'actual' => '18915219000186' + ), + array( + 'expected' => '09.376.674/0001-60', + 'actual' => '09376674000160' + ), + array( + 'expected' => '09.376.674/0001-60', + 'actual' => 9376674000160 + ) + ); + } + + public function dataForRemoveMask() + { + return array( + array( + 'actual' => '18.915.219/0001-86', + 'expected' => 18915219000186 + ), + array( + 'actual' => '09.376.674/0001-60', + 'expected' => 9376674000160 + ) + ); + } + + /** + * @dataProvider dataForRemoveMask + */ + public function testRemoveMask($actual, $expected) + { + $filter = new CNPJMask(); + + $cnpj = $filter->removeMask($actual); + + $this->assertEquals($expected, $cnpj); + } + + /** + * @dataProvider dataForAddMask + */ + public function testApplyMask($expected, $actual) + { + $filter = new CNPJMask(); + + $cnpj = $filter->applyMask($actual); + + $this->assertEquals($expected, $cnpj); + } +}