From 3c71fa2f7dc1d0aeecd9bd3de59163cc9ff3fb16 Mon Sep 17 00:00:00 2001 From: Cauan Cabral Date: Wed, 29 Apr 2020 16:43:22 -0300 Subject: [PATCH 1/4] Implement methods to validate date and decimal on localized form --- src/Validation/BrValidation.php | 8 +++ src/Validation/LocalizedValidation.php | 56 +++++++++++++++++++ src/Validation/ValidationInterface.php | 24 ++++++++ .../TestCase/Validation/BrValidationTest.php | 19 +++++++ .../TestCase/Validation/UsValidationTest.php | 19 +++++++ 5 files changed, 126 insertions(+) diff --git a/src/Validation/BrValidation.php b/src/Validation/BrValidation.php index e9fbb775..236b251a 100644 --- a/src/Validation/BrValidation.php +++ b/src/Validation/BrValidation.php @@ -22,6 +22,14 @@ */ class BrValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $_validationLocale = 'pt_BR'; + /** * Checks a phone number for Brazil. * diff --git a/src/Validation/LocalizedValidation.php b/src/Validation/LocalizedValidation.php index 4aecf00d..80db261a 100644 --- a/src/Validation/LocalizedValidation.php +++ b/src/Validation/LocalizedValidation.php @@ -14,9 +14,65 @@ */ namespace Cake\Localized\Validation; +use Cake\I18n\Date; +use Cake\I18n\I18n; +use Cake\I18n\Number; + /** * Localized Validation base class. */ abstract class LocalizedValidation implements ValidationInterface { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $_validationLocale = 'en_US'; + + /** + * Checks a date string, from language specific format. + * + * @param string $string The value to check. + * @return bool Success. + */ + public static function date(string $string): bool + { + $currentLocale = I18n::getLocale(); + $needChange = ($currentLocale !== static::$_validationLocale); + if ($needChange) { + I18n::setLocale(static::$_validationLocale); + } + + $isValid = Date::parseDate($string) !== null; + + if ($needChange) { + I18n::setLocale($currentLocale); + } + + return $isValid; + } + + /** + * Checks a date and time string, from language specific format. + * + * @param string $string The value to check. + * @return bool Success. + */ + public static function dateTime(string $string): bool + { + return Date::parseDateTime($string) !== null; + } + + /** + * Checks a decimal number, from language specific format. + * + * @param string $string The value to check. + * @return bool Success. + */ + public static function decimal(string $string): bool + { + return Number::parseFloat($string) !== false; + } } diff --git a/src/Validation/ValidationInterface.php b/src/Validation/ValidationInterface.php index 6952ed1e..5758028e 100644 --- a/src/Validation/ValidationInterface.php +++ b/src/Validation/ValidationInterface.php @@ -42,4 +42,28 @@ public static function postal(string $string): bool; * @return bool Success. */ public static function personId(string $string): bool; + + /** + * Checks a date string, from language specific format. + * + * @param string $string The value to check. + * @return bool Success. + */ + public static function date(string $string): bool; + + /** + * Checks a date and time string, from language specific format. + * + * @param string $string The value to check. + * @return bool Success. + */ + public static function dateTime(string $string): bool; + + /** + * Checks a decimal number, from language specific format. + * + * @param string $string The value to check. + * @return bool Success. + */ + public static function decimal(string $string): bool; } diff --git a/tests/TestCase/Validation/BrValidationTest.php b/tests/TestCase/Validation/BrValidationTest.php index 794b67d2..3227e4e9 100644 --- a/tests/TestCase/Validation/BrValidationTest.php +++ b/tests/TestCase/Validation/BrValidationTest.php @@ -190,4 +190,23 @@ public function testCns() $this->assertFalse(BrValidation::cns('9021 6194 0000')); $this->assertFalse(BrValidation::cns(['12345678909'])); } + + /** + * test the date method of BrValidation + * + * @return void + */ + public function testDate() + { + $this->assertTrue(BrValidation::date('01/01/2020')); + $this->assertTrue(BrValidation::date('12/11/2019')); + $this->assertTrue(BrValidation::date('21/04/1940')); + $this->assertTrue(BrValidation::date('1/3/20')); + $this->assertTrue(BrValidation::date('25-12-2000')); + + $this->assertFalse(BrValidation::date('04/21/1980')); + $this->assertFalse(BrValidation::date('2000-12-25')); + $this->assertFalse(BrValidation::date('2019/11/12')); + $this->assertFalse(BrValidation::date('2040/25/12')); + } } diff --git a/tests/TestCase/Validation/UsValidationTest.php b/tests/TestCase/Validation/UsValidationTest.php index 0983b1bb..9d2976c8 100644 --- a/tests/TestCase/Validation/UsValidationTest.php +++ b/tests/TestCase/Validation/UsValidationTest.php @@ -115,4 +115,23 @@ public function testSsn() $this->assertFalse(UsValidation::personId('111-33-333')); $this->assertTrue(UsValidation::personId('111-33-4333')); } + + /** + * test the date method of UsValidation + * + * @return void + */ + public function testDate() + { + $this->assertTrue(UsValidation::date('01/01/2020')); + $this->assertTrue(UsValidation::date('12/11/2019')); + $this->assertTrue(UsValidation::date('04/21/1980')); + $this->assertTrue(UsValidation::date('1/3/20')); + + $this->assertFalse(UsValidation::date('25-12-2000')); + $this->assertFalse(UsValidation::date('21/04/1940')); + $this->assertFalse(UsValidation::date('2000-12-25')); + $this->assertFalse(UsValidation::date('2019/11/12')); + $this->assertFalse(UsValidation::date('2040/25/12')); + } } From 8c8b8256357d7ae48d5c67a24514bfdedd9c8b40 Mon Sep 17 00:00:00 2001 From: Cauan Cabral Date: Mon, 11 May 2020 18:26:54 -0300 Subject: [PATCH 2/4] Include a definition for each locale to validate date/datetime Implement a general rule on abstract base class --- src/Validation/AtValidation.php | 8 ++++++ src/Validation/AuValidation.php | 8 ++++++ src/Validation/BdValidation.php | 8 ++++++ src/Validation/BeValidation.php | 8 ++++++ src/Validation/BrValidation.php | 2 +- src/Validation/CaValidation.php | 8 ++++++ src/Validation/ChValidation.php | 8 ++++++ src/Validation/CnValidation.php | 8 ++++++ src/Validation/CzValidation.php | 8 ++++++ src/Validation/DeValidation.php | 8 ++++++ src/Validation/DkValidation.php | 8 ++++++ src/Validation/EsValidation.php | 8 ++++++ src/Validation/FiValidation.php | 8 ++++++ src/Validation/FrValidation.php | 8 ++++++ src/Validation/GbValidation.php | 8 ++++++ src/Validation/HrValidation.php | 8 ++++++ src/Validation/IdValidation.php | 8 ++++++ src/Validation/InValidation.php | 8 ++++++ src/Validation/IrValidation.php | 8 ++++++ src/Validation/ItValidation.php | 8 ++++++ src/Validation/JpValidation.php | 8 ++++++ src/Validation/LocalizedValidation.php | 38 +++++++++++++++++++++++--- src/Validation/LtValidation.php | 8 ++++++ src/Validation/LvValidation.php | 8 ++++++ src/Validation/MxValidation.php | 8 ++++++ src/Validation/NlValidation.php | 8 ++++++ src/Validation/NoValidation.php | 8 ++++++ src/Validation/PlValidation.php | 8 ++++++ src/Validation/PtValidation.php | 8 ++++++ src/Validation/RoValidation.php | 8 ++++++ src/Validation/RsValidation.php | 8 ++++++ src/Validation/RuValidation.php | 8 ++++++ src/Validation/SkValidation.php | 8 ++++++ src/Validation/TnValidation.php | 8 ++++++ src/Validation/TrValidation.php | 8 ++++++ src/Validation/TwValidation.php | 8 ++++++ src/Validation/UaValidation.php | 8 ++++++ src/Validation/UsValidation.php | 8 ++++++ 38 files changed, 323 insertions(+), 5 deletions(-) diff --git a/src/Validation/AtValidation.php b/src/Validation/AtValidation.php index d2e320a6..b6f8f2c6 100644 --- a/src/Validation/AtValidation.php +++ b/src/Validation/AtValidation.php @@ -24,6 +24,14 @@ */ class AtValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'de_AT'; + /** * Checks a postal code. * diff --git a/src/Validation/AuValidation.php b/src/Validation/AuValidation.php index 69bbd44a..4da485e8 100644 --- a/src/Validation/AuValidation.php +++ b/src/Validation/AuValidation.php @@ -24,6 +24,14 @@ */ class AuValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'en_AU'; + /** * Checks a postal code for Australia. * diff --git a/src/Validation/BdValidation.php b/src/Validation/BdValidation.php index d4749933..ad8c5591 100644 --- a/src/Validation/BdValidation.php +++ b/src/Validation/BdValidation.php @@ -24,6 +24,14 @@ */ class BdValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'bn_BD'; + /** * Checks a postal code. * diff --git a/src/Validation/BeValidation.php b/src/Validation/BeValidation.php index 762c2627..382341d1 100644 --- a/src/Validation/BeValidation.php +++ b/src/Validation/BeValidation.php @@ -24,6 +24,14 @@ */ class BeValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'nl_BE'; + /** * Checks a postal code for Belgium. * diff --git a/src/Validation/BrValidation.php b/src/Validation/BrValidation.php index 236b251a..45b71e93 100644 --- a/src/Validation/BrValidation.php +++ b/src/Validation/BrValidation.php @@ -28,7 +28,7 @@ class BrValidation extends LocalizedValidation * * @var string */ - protected static $_validationLocale = 'pt_BR'; + protected static $validationLocale = 'pt_BR'; /** * Checks a phone number for Brazil. diff --git a/src/Validation/CaValidation.php b/src/Validation/CaValidation.php index 312f8d20..a8c5b4db 100644 --- a/src/Validation/CaValidation.php +++ b/src/Validation/CaValidation.php @@ -24,6 +24,14 @@ */ class CaValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'en_CA'; + /** * Checks a postal code for Canada. * diff --git a/src/Validation/ChValidation.php b/src/Validation/ChValidation.php index 518978e9..3e6e84c2 100644 --- a/src/Validation/ChValidation.php +++ b/src/Validation/ChValidation.php @@ -24,6 +24,14 @@ */ class ChValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'de_CH'; + /** * Checks a postal code for Switzerland & Liechtenstein * diff --git a/src/Validation/CnValidation.php b/src/Validation/CnValidation.php index 73d0d548..4257d041 100644 --- a/src/Validation/CnValidation.php +++ b/src/Validation/CnValidation.php @@ -22,6 +22,14 @@ */ class CnValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'zh_CN'; + /** * Checks phone numbers for The Peoples Republic of China (mainland) * diff --git a/src/Validation/CzValidation.php b/src/Validation/CzValidation.php index fbc4988f..53f57585 100644 --- a/src/Validation/CzValidation.php +++ b/src/Validation/CzValidation.php @@ -24,6 +24,14 @@ */ class CzValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'cs_CZ'; + /** * Checks a postal code for Czech Republic * diff --git a/src/Validation/DeValidation.php b/src/Validation/DeValidation.php index 7aa8ea18..83704cdf 100644 --- a/src/Validation/DeValidation.php +++ b/src/Validation/DeValidation.php @@ -24,6 +24,14 @@ */ class DeValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'de_DE'; + /** * Checks a postal code for Germany. * diff --git a/src/Validation/DkValidation.php b/src/Validation/DkValidation.php index d8b90c72..0585e0fe 100644 --- a/src/Validation/DkValidation.php +++ b/src/Validation/DkValidation.php @@ -22,6 +22,14 @@ */ class DkValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'da_DK'; + /** * Checks a social security number for Denmark. * diff --git a/src/Validation/EsValidation.php b/src/Validation/EsValidation.php index 29a469d6..80b8a51a 100644 --- a/src/Validation/EsValidation.php +++ b/src/Validation/EsValidation.php @@ -22,6 +22,14 @@ */ class EsValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'es_ES'; + /** * The list of allowed personId codes. Sorted as wee need them. * diff --git a/src/Validation/FiValidation.php b/src/Validation/FiValidation.php index ee88a9a1..eb9a70ee 100644 --- a/src/Validation/FiValidation.php +++ b/src/Validation/FiValidation.php @@ -24,6 +24,14 @@ */ class FiValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'fi_FI'; + /** * Checks a postal code for Finland. * diff --git a/src/Validation/FrValidation.php b/src/Validation/FrValidation.php index 4b7bc2c3..b63ac9df 100644 --- a/src/Validation/FrValidation.php +++ b/src/Validation/FrValidation.php @@ -22,6 +22,14 @@ */ class FrValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'fr_FR'; + /** * Checks a phone number for France. * diff --git a/src/Validation/GbValidation.php b/src/Validation/GbValidation.php index ccbb1d69..d4bd6693 100644 --- a/src/Validation/GbValidation.php +++ b/src/Validation/GbValidation.php @@ -22,6 +22,14 @@ */ class GbValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'en_GB'; + /** * Checks a postal code for The United Kingdom * diff --git a/src/Validation/HrValidation.php b/src/Validation/HrValidation.php index 5ce48330..19f9fb51 100644 --- a/src/Validation/HrValidation.php +++ b/src/Validation/HrValidation.php @@ -23,6 +23,14 @@ */ class HrValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'hr_HR'; + /** * Checks a postal code for Croatia. * diff --git a/src/Validation/IdValidation.php b/src/Validation/IdValidation.php index c17c348d..a26463aa 100644 --- a/src/Validation/IdValidation.php +++ b/src/Validation/IdValidation.php @@ -24,6 +24,14 @@ */ class IdValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'id_ID'; + /** * Checks a postal code for Indonesia. * diff --git a/src/Validation/InValidation.php b/src/Validation/InValidation.php index 09262074..1ca33cc0 100644 --- a/src/Validation/InValidation.php +++ b/src/Validation/InValidation.php @@ -24,6 +24,14 @@ */ class InValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'en_IN'; + /** * Validate postal code * diff --git a/src/Validation/IrValidation.php b/src/Validation/IrValidation.php index 7dbab84b..ca30fad9 100644 --- a/src/Validation/IrValidation.php +++ b/src/Validation/IrValidation.php @@ -20,6 +20,14 @@ */ class IrValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'fa_IR'; + /** * Checks for Persian/Farsi characters and number an zero width non-joiner space. * Also accepts latin numbers preventing potential problem until PHP becomes fully unicode compatible. diff --git a/src/Validation/ItValidation.php b/src/Validation/ItValidation.php index 2df10e71..33653e9f 100644 --- a/src/Validation/ItValidation.php +++ b/src/Validation/ItValidation.php @@ -24,6 +24,14 @@ */ class ItValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'it_IT'; + /** * Checks a phone number for Italy. * diff --git a/src/Validation/JpValidation.php b/src/Validation/JpValidation.php index 4e026519..b199ffd0 100644 --- a/src/Validation/JpValidation.php +++ b/src/Validation/JpValidation.php @@ -24,6 +24,14 @@ */ class JpValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'ja_JP'; + /** * Checks a phone number for Japan. * Accepts the following format. diff --git a/src/Validation/LocalizedValidation.php b/src/Validation/LocalizedValidation.php index 80db261a..6d2194d8 100644 --- a/src/Validation/LocalizedValidation.php +++ b/src/Validation/LocalizedValidation.php @@ -29,7 +29,7 @@ abstract class LocalizedValidation implements ValidationInterface * * @var string */ - protected static $_validationLocale = 'en_US'; + protected static $validationLocale = 'en_US'; /** * Checks a date string, from language specific format. @@ -40,9 +40,14 @@ abstract class LocalizedValidation implements ValidationInterface public static function date(string $string): bool { $currentLocale = I18n::getLocale(); - $needChange = ($currentLocale !== static::$_validationLocale); + $needChange = ($currentLocale !== static::$validationLocale); if ($needChange) { - I18n::setLocale(static::$_validationLocale); + I18n::setLocale(static::$validationLocale); + } + + $currentLenient = Date::lenientParsingEnabled(); + if ($currentLenient) { + Date::disableLenientParsing(); } $isValid = Date::parseDate($string) !== null; @@ -51,6 +56,10 @@ public static function date(string $string): bool I18n::setLocale($currentLocale); } + if ($currentLenient) { + Date::enableLenientParsing(); + } + return $isValid; } @@ -62,7 +71,28 @@ public static function date(string $string): bool */ public static function dateTime(string $string): bool { - return Date::parseDateTime($string) !== null; + $currentLocale = I18n::getLocale(); + $needChange = ($currentLocale !== static::$validationLocale); + if ($needChange) { + I18n::setLocale(static::$validationLocale); + } + + $currentLenient = Date::lenientParsingEnabled(); + if ($currentLenient) { + Date::disableLenientParsing(); + } + + $isValid = Date::parseDateTime($string) !== null; + + if ($needChange) { + I18n::setLocale($currentLocale); + } + + if ($currentLenient) { + Date::enableLenientParsing(); + } + + return $isValid; } /** diff --git a/src/Validation/LtValidation.php b/src/Validation/LtValidation.php index d18fe8b6..e91975ad 100644 --- a/src/Validation/LtValidation.php +++ b/src/Validation/LtValidation.php @@ -20,6 +20,14 @@ */ class LtValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'lt_LT'; + /** * Checks a phone number for the Lithuania. * diff --git a/src/Validation/LvValidation.php b/src/Validation/LvValidation.php index 593d9c3e..5e09cd95 100644 --- a/src/Validation/LvValidation.php +++ b/src/Validation/LvValidation.php @@ -24,6 +24,14 @@ */ class LvValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'lv_LV'; + /** * Checks a postal code for Latvia. * diff --git a/src/Validation/MxValidation.php b/src/Validation/MxValidation.php index 4a3a5dae..6bda6b1b 100644 --- a/src/Validation/MxValidation.php +++ b/src/Validation/MxValidation.php @@ -24,6 +24,14 @@ */ class MxValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'es_MX'; + /** * Checks a phone number for Mexico. * diff --git a/src/Validation/NlValidation.php b/src/Validation/NlValidation.php index c4080712..35f29c25 100644 --- a/src/Validation/NlValidation.php +++ b/src/Validation/NlValidation.php @@ -20,6 +20,14 @@ */ class NlValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'nl_NL'; + /** * Checks a phone number for The Netherlands * diff --git a/src/Validation/NoValidation.php b/src/Validation/NoValidation.php index 9001ec57..11d76516 100644 --- a/src/Validation/NoValidation.php +++ b/src/Validation/NoValidation.php @@ -22,6 +22,14 @@ */ class NoValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'nb_NO'; + /** * Checks date of birth formal format for Norway (dd.mm.yyyy), * afterwards checks if is a valid gregorian calendar date. diff --git a/src/Validation/PlValidation.php b/src/Validation/PlValidation.php index 2d637666..69a84b85 100644 --- a/src/Validation/PlValidation.php +++ b/src/Validation/PlValidation.php @@ -20,6 +20,14 @@ */ class PlValidation extends \Cake\Localized\Validation\LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'pl_PL'; + /** * Checks a postal code for Poland. * diff --git a/src/Validation/PtValidation.php b/src/Validation/PtValidation.php index 93209990..59fc6516 100644 --- a/src/Validation/PtValidation.php +++ b/src/Validation/PtValidation.php @@ -24,6 +24,14 @@ */ class PtValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'pt_PT'; + /** * Checks a postal code for Portugal. * diff --git a/src/Validation/RoValidation.php b/src/Validation/RoValidation.php index cd23f695..bf8ba04b 100644 --- a/src/Validation/RoValidation.php +++ b/src/Validation/RoValidation.php @@ -24,6 +24,14 @@ */ class RoValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'ro_RO'; + /** * Checks postal codes for Romania * diff --git a/src/Validation/RsValidation.php b/src/Validation/RsValidation.php index fdd1c988..7f2c57c2 100644 --- a/src/Validation/RsValidation.php +++ b/src/Validation/RsValidation.php @@ -24,6 +24,14 @@ */ class RsValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'cs_RS'; + /** * Checks a postal code (Poštanski broj) for Serbia. * diff --git a/src/Validation/RuValidation.php b/src/Validation/RuValidation.php index c1797f80..70a36ea1 100644 --- a/src/Validation/RuValidation.php +++ b/src/Validation/RuValidation.php @@ -22,6 +22,14 @@ */ class RuValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'ru_RU'; + /** * Checks a postal code for Russia * diff --git a/src/Validation/SkValidation.php b/src/Validation/SkValidation.php index 497b3e4a..4a5cb743 100644 --- a/src/Validation/SkValidation.php +++ b/src/Validation/SkValidation.php @@ -24,6 +24,14 @@ */ class SkValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'sk_SK'; + /** * Checks a postal code for Slovakia. * diff --git a/src/Validation/TnValidation.php b/src/Validation/TnValidation.php index 99453095..5cf40f80 100644 --- a/src/Validation/TnValidation.php +++ b/src/Validation/TnValidation.php @@ -22,6 +22,14 @@ */ class TnValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'ar_TN'; + /** * Checks a phone number for Tunisia. * diff --git a/src/Validation/TrValidation.php b/src/Validation/TrValidation.php index ed8136bb..4f46dff3 100644 --- a/src/Validation/TrValidation.php +++ b/src/Validation/TrValidation.php @@ -24,6 +24,14 @@ */ class TrValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'tr_TR'; + /** * Checks a postal code for Turkey. * diff --git a/src/Validation/TwValidation.php b/src/Validation/TwValidation.php index 863130b2..32e2df48 100644 --- a/src/Validation/TwValidation.php +++ b/src/Validation/TwValidation.php @@ -22,6 +22,14 @@ */ class TwValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'zh_TW'; + /** * Checks a phone number for Taiwan. * diff --git a/src/Validation/UaValidation.php b/src/Validation/UaValidation.php index fd0d7133..84564d63 100644 --- a/src/Validation/UaValidation.php +++ b/src/Validation/UaValidation.php @@ -22,6 +22,14 @@ */ class UaValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'uk_UA'; + /** * Checks a postal (zip) code for Ukraine * diff --git a/src/Validation/UsValidation.php b/src/Validation/UsValidation.php index 273660ca..33343507 100644 --- a/src/Validation/UsValidation.php +++ b/src/Validation/UsValidation.php @@ -20,6 +20,14 @@ */ class UsValidation extends LocalizedValidation { + /** + * Define locale to be used by that localized + * validation set + * + * @var string + */ + protected static $validationLocale = 'en_US'; + /** * Checks a phone number for The United States * From 9fc645e17cd0c09733d9bb0db5173057d50d30d8 Mon Sep 17 00:00:00 2001 From: Cauan Cabral Date: Thu, 13 May 2021 10:10:28 -0300 Subject: [PATCH 3/4] Fix invalid test case and include two more cases to clarify expected behavior --- tests/TestCase/Validation/BrValidationTest.php | 4 ++-- tests/TestCase/Validation/UsValidationTest.php | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/TestCase/Validation/BrValidationTest.php b/tests/TestCase/Validation/BrValidationTest.php index 3227e4e9..7fdf881a 100644 --- a/tests/TestCase/Validation/BrValidationTest.php +++ b/tests/TestCase/Validation/BrValidationTest.php @@ -202,9 +202,9 @@ public function testDate() $this->assertTrue(BrValidation::date('12/11/2019')); $this->assertTrue(BrValidation::date('21/04/1940')); $this->assertTrue(BrValidation::date('1/3/20')); - $this->assertTrue(BrValidation::date('25-12-2000')); - $this->assertFalse(BrValidation::date('04/21/1980')); + $this->assertFalse(BrValidation::date('25-12-2000'), 'BR date accept only slash as separator'); + $this->assertFalse(BrValidation::date('04/21/1980'), 'BR date accept only day/month/year sequence'); $this->assertFalse(BrValidation::date('2000-12-25')); $this->assertFalse(BrValidation::date('2019/11/12')); $this->assertFalse(BrValidation::date('2040/25/12')); diff --git a/tests/TestCase/Validation/UsValidationTest.php b/tests/TestCase/Validation/UsValidationTest.php index 9d2976c8..a1d9f9a5 100644 --- a/tests/TestCase/Validation/UsValidationTest.php +++ b/tests/TestCase/Validation/UsValidationTest.php @@ -128,6 +128,7 @@ public function testDate() $this->assertTrue(UsValidation::date('04/21/1980')); $this->assertTrue(UsValidation::date('1/3/20')); + $this->assertFalse(UsValidation::date('1-3-2020'), 'US date only accept slash as separator'); $this->assertFalse(UsValidation::date('25-12-2000')); $this->assertFalse(UsValidation::date('21/04/1940')); $this->assertFalse(UsValidation::date('2000-12-25')); From 1df3f1d8735d2e2a473d8dc8e9df6dbd6e44bf17 Mon Sep 17 00:00:00 2001 From: Cauan Cabral Date: Fri, 14 May 2021 14:26:23 -0300 Subject: [PATCH 4/4] Bump dependency cakephp version to 4.1.0+ --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index a9832f52..576af767 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ }, "require": { "php": ">=7.2", - "cakephp/cakephp": "^4.0.0" + "cakephp/cakephp": "^4.1.0" }, "require-dev": { "cakephp/cakephp-codesniffer": "^4.0",