From a0dbc29fa636a28b67dcdc9c45ab87fac293c215 Mon Sep 17 00:00:00 2001 From: Andre Cardoso Date: Tue, 9 Oct 2018 00:00:15 -0300 Subject: [PATCH 1/4] feat: created CNPJ mask filter and applied it in Client model. This feat references the issue #104 (https://github.com/Coderockr/orcamentos/issues/104) --- phpunit.xml | 2 +- src/Orcamentos/Filter/CNPJMask.php | 37 +++++++++++ src/Orcamentos/Model/Client.php | 7 +- src/Orcamentos/Test/ApplicationTestCase.php | 4 +- tests/src/Orcamentos/Filter/CNPJMaskTest.php | 69 ++++++++++++++++++++ 5 files changed, 115 insertions(+), 4 deletions(-) create mode 100644 src/Orcamentos/Filter/CNPJMask.php create mode 100644 tests/src/Orcamentos/Filter/CNPJMaskTest.php 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..2a6938b --- /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..45c71bc 100644 --- a/src/Orcamentos/Test/ApplicationTestCase.php +++ b/src/Orcamentos/Test/ApplicationTestCase.php @@ -3,9 +3,9 @@ namespace Orcamentos\Test; use Mockery as m; -use PHPUnit_Framework_TestCase; +use PHPUnit\Framework\TestCase; -class ApplicationTestCase extends PHPUnit_Framework_TestCase +class ApplicationTestCase extends 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..d0d55a6 --- /dev/null +++ b/tests/src/Orcamentos/Filter/CNPJMaskTest.php @@ -0,0 +1,69 @@ + '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 dataForRemoveMask + */ + public function testApplyMask($expected, $actual) + { + $filter = new CNPJMask(); + + $cnpj = $filter->applyMask($actual); + + $this->assertEquals($expected, $cnpj); + } +} From ae5b7670a484d3dd4f2474079de88d75ca01a277 Mon Sep 17 00:00:00 2001 From: Andre Cardoso Date: Tue, 9 Oct 2018 00:05:56 -0300 Subject: [PATCH 2/4] fix: forcing string before apply str_pad --- src/Orcamentos/Filter/CNPJMask.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Orcamentos/Filter/CNPJMask.php b/src/Orcamentos/Filter/CNPJMask.php index 2a6938b..6725598 100644 --- a/src/Orcamentos/Filter/CNPJMask.php +++ b/src/Orcamentos/Filter/CNPJMask.php @@ -24,7 +24,7 @@ public function removeMask($cnpj) public function applyMask($cnpj) { // asserting that only digits will be present - $cnpj = $this->removeMask($cnpj); + $cnpj = (string)$this->removeMask($cnpj); // applying 14 digits $cnpj = str_pad($cnpj, 14, '0', STR_PAD_LEFT); From 2dc0cfdab6ba717880abe01d016e0095d3c6be85 Mon Sep 17 00:00:00 2001 From: Andre Cardoso Date: Tue, 9 Oct 2018 00:10:53 -0300 Subject: [PATCH 3/4] fix: removed int return --- src/Orcamentos/Filter/CNPJMask.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Orcamentos/Filter/CNPJMask.php b/src/Orcamentos/Filter/CNPJMask.php index 6725598..d4f7573 100644 --- a/src/Orcamentos/Filter/CNPJMask.php +++ b/src/Orcamentos/Filter/CNPJMask.php @@ -10,11 +10,11 @@ class CNPJMask { /** * @param $cnpj - * @return int + * @return string */ public function removeMask($cnpj) { - return (int)preg_replace("/\D/", '', $cnpj); + return (string)preg_replace("/\D/", '', $cnpj); } /** @@ -24,7 +24,7 @@ public function removeMask($cnpj) public function applyMask($cnpj) { // asserting that only digits will be present - $cnpj = (string)$this->removeMask($cnpj); + $cnpj = $this->removeMask($cnpj); // applying 14 digits $cnpj = str_pad($cnpj, 14, '0', STR_PAD_LEFT); From 75cada0e7129a07efe881b8e66f8f946b9b51c7b Mon Sep 17 00:00:00 2001 From: Andre Cardoso Date: Tue, 9 Oct 2018 00:17:20 -0300 Subject: [PATCH 4/4] fix: fixed data provider and Ebert error indication for TestCase --- src/Orcamentos/Test/ApplicationTestCase.php | 3 +-- tests/src/Orcamentos/Filter/CNPJMaskTest.php | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Orcamentos/Test/ApplicationTestCase.php b/src/Orcamentos/Test/ApplicationTestCase.php index 45c71bc..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 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 index d0d55a6..f53d099 100644 --- a/tests/src/Orcamentos/Filter/CNPJMaskTest.php +++ b/tests/src/Orcamentos/Filter/CNPJMaskTest.php @@ -3,13 +3,12 @@ namespace Orcamentos\Service; use Orcamentos\Filter\CNPJMask; -use PHPUnit\Framework\TestCase; /** * Class CNPJMaskTest * @package Orcamentos\Service */ -class CNPJMaskTest extends TestCase +class CNPJMaskTest extends \PHPUnit\Framework\TestCase { public function dataForAddMask() { @@ -56,7 +55,7 @@ public function testRemoveMask($actual, $expected) } /** - * @dataProvider dataForRemoveMask + * @dataProvider dataForAddMask */ public function testApplyMask($expected, $actual) {