Commit graph

926 commits

Author SHA1 Message Date
Danilo Correa e832a99d4c
Apply contribution guidelines to "StringVal" rule
Also creates a "ToStringStub" class to help on testing objects that can
be converted to string.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-09-06 08:41:12 +02:00
Danilo Correa c7fbded457
Apply contribution guidelines to "NumericVal" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-09-06 08:41:11 +02:00
Danilo Correa 17f8c50f54
Apply contribution guidelines to "Length" rule
Because of the type hinting some validation could be removed from the
"length" constructor.

While applying the contribution guidelines we could also see some
duplicated logic in the "extractLength" method and that the rule was
validating

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-09-06 08:41:11 +02:00
Henrique Moody 779c0c1503
Do not accept whitespace by default in "Alnum" rule
The "Alnum" rule is supposed to validate alphanumeric values, but
instead, it also validates any whitespace character as valid.

The rule also accepts a list of characters on its constructor, so it the
users intentionally want some specific characters to also be allowed it
is better than they also defined these characters on the rule's
constructor.

While refactoring the rule I could notice that "AbstractCtypeRule" is
just an overhead that does not add much to it, so instead of extending
it "Alnum" now extends "AbstractFilterRule" directly (which is the
parent of "AbstractCtypeRule").

And since we want all rules to follow our contribution guidelines, this
commit also make sure the "Alnum" rule is in accordance with that.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-09-04 00:05:24 +02:00
Henrique Moody fb9d3a6918
Remove condition related to HHVM
Because we don't support HHVM anymore, there is no reason to keep a
condition that keeps the test when running the test suite in HHVM.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-09-03 17:38:33 +02:00
Henrique Moody c7fcc09af6
Upgrade PHPUnit version
The changes you see in this commit had to be made due to the upgrade of
PHPunit version.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-09-03 17:37:44 +02:00
Danilo Benevides 9a8cac06d7 Apply contribution guidelines to "Json" rule 2018-08-30 23:08:27 -03:00
Henrique Moody 5a067faec7
Update "PostalCode" list
Updated the whole list according to the last version found on
geonames.org.

The script that I executed to generate the list is:

curl -L http://download.geonames.org/export/dump/countryInfo.txt |
  sed 's,\t,\;,g' |
  sort -u |
  cut -d ';' -f 1,15 |
  sed -E "/^#/d; /^[A-Z]{2}\;$/d; s,([A-Z]{2})\;(.+),'\1' => '/\2/'\,,g"

After generating the list I few changes had to be made since some of the
postal codes in the list were manually updated because they were not
correct.

This change was made because James Macon reported that "110231" was
not recognized as a valid Colombian postal code.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-29 22:30:50 +02:00
Henrique Moody a039d6d4b9
Fix wrong behavior of "Date" rule
The validation was considering "99" as a valid month and neither
date_parse_from_format() [1] or DateTime::createFromFormat() [2] would
complain about that.

The solution for that was to use checkdate() [3] to verify whether the
date is valid or not. Also, an extra step was added to the validation
that a date that only contains a day would return false since a day
without a month and year is impossible to validate.

Apparently, there is no problem while validation when it comes to time,
therefore nothing needed to be added for this validation.

[1]: http://php.net/date_parse_from_format
[2]: http://php.net/datetime.createFromFormat
[3]: http://php.net/checkdate

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-29 21:46:53 +02:00
Henrique Moody 258a456eec
Setup PHPStan (PHP Static Analysis Tool)
Require "phpstan/phpstan" for development and add to the Travis CI
configuration file to execute the analysis when Travis executes the
build with the version 7.2 of PHP.

The level of the configuration is very week for now (just "1") and still
quite some changes had to be made in order to make the analysis pass. I
hope it does not take much time to increase the level of the strictness
of the analyses.

I tried to configure that before but because of dependencies with
"symfony/validator" it was not possible.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-22 19:10:20 +02:00
Henrique Moody 1da164a26e
Change how "Sf" rule works
Instead of creating the Symfony constraints itself "Sf" accepts an
instance of "Symfony\Component\Validator\Constraint".

Creating objects inside a rule, specially from an external library,
makes the rule too complex and also limits the possibilities with the
"Sf" rule since Symfony allows users to create complex validations (even
thought their API is not as simple as ours).

This commit also simplifies the way the messages are passed from Symfony
to the "Sf" when only one constraint has failed; instead of passing
the message of the whole constraint violation list, only the fist
constraint violation message it passed.

The problem that this rule will always have is that when using "Not" to
invert the validation we have a way to get a proper message since
Symfony Validator only return the result of constraints that failed.
That's something the Respect\Validation does in a similar way and to
change it a lot has to be changed.

These changes were checked in "symfony/validator" 4.0 and the version
was added to the "composer.json" file.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-22 17:46:21 +02:00
Henrique Moody fe7fed3461
Remove support "egulias/email-validator" ~1.0
The rule "Email" now only supports the version >=2.0 of
"egulias/email-validator". Also a few changes were made to make the rule
a bit simpler.

The method "getEmailValidator()" which was a lazy load of the
"EmailValidator" class was removed in favor of trying to create the
instance of "EmailValidator" in the constructor of "Email". That makes
the rule immutable after its creation.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-22 17:22:46 +02:00
Henrique Moody d64d26c681
Intercept throwables in the "Call" rule
The callable defined to the "Call" rule may also throw an exception and
as we don't want to have errors nor exceptions that are not part of the
Validation during the validation of inputs it just makes sense to
intercept any instance of Throwable.

This change was initially thought of because in Travis the version 7.4
of PHP was throwing "Error" instead of triggering PHP errors which made
the tests fail.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-22 17:04:20 +02:00
Henrique Moody 2fac861aa1
Do not trigger PHP errors in the "Call" rule
This commit make sure that when the callable is executed by the "Call"
rule and PHP triggers an error, the user does not have to deal with it,
and instead the rule will throw "CallException".

Because of the many changes that were made, it didn't make sense to keep
the class "Call" extending the "AbstractRelated" class.

One thing that is a bit problematic with this rule - and with other
rules as well - is that Validation only knows details of a validation
when it fails, because of that we cannot invert the validations that
passed, meaning that the "Not" rule cannot give the proper response to
a validation that passed. This is a know issue that can only be fixed
is we provide a way for Validation do have more granularity control.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-21 01:22:38 +02:00
Henrique Moody 3b789815fb
Execute PHP-CS-Fixer
The last version of PHP-CS-Fixer fixes a few things that were not
detected before.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-21 01:20:54 +02:00
Danilo Benevides 2b8acfd790 Apply contribution guidelines to "In" rule 2018-08-19 16:01:10 -03:00
Danilo Benevides d022a71f54
Apply contribution guidelines to "Instance" rule
Also updates how the tests define the name of the instance by using the
class keyword [1] instead of a string with the class. That is useful
in code analyses be able to identify the usage of these
classes/interfaces.

[1] http://php.net/class#language.oop5.basic.class.class

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-16 21:54:17 +02:00
Ismael Elias fad0005fa0
Apply contribution guidelines to "Number" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-16 21:54:17 +02:00
Danilo Benevides 94d2e87b2a
Apply contribution guidelines to "Infinite" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-16 21:54:16 +02:00
Danilo Benevides f01972e208
Apply contribution guidelines to "Imei" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-16 21:54:16 +02:00
Henrique Moody afab4eb2b4
Rename "Related" to "Child"
The "NestedValidationException" has exceptions that are its children.
However, we call them "related". This commit updates the term over the
library.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-02 11:18:33 +02:00
Henrique Moody eded93b0df
Merge branch '1.1' 2018-08-01 22:08:30 +02:00
Henrique Moody 0cdd8c4546
Fix issues after merging 1.1
These two branches are very different, therefore merging is becoming
very hard.

I decided to not put these changes together with 5750952 because it
seems easy to track these changes with a specific commit.

While working on this merge I realized that would make more sense to
create "AbstractComparison" to handle the rules that compare values.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-08-01 20:46:34 +02:00
Henrique Moody 57509520a4
Merge branch '1.1' 2018-08-01 20:22:37 +02:00
Andrei Drulchenko 19d6ec8939 fix IntVal() leading zero behavior 2018-08-01 16:06:54 +03:00
Henrique Moody 47f21596a5
Fix casting error in AbstractInterval classes
The classes that are children of "AbstractInterval" convert their values
before comparing them.

Because PHP tries to convert values when making comparisons and an
"DateTime" object cannot be converted to integer or float some
validations would result into PHP triggering an error like:

> Object of class DateTime could not be converted to int
> Object of class DateTime could not be converted to float

This commit prevents that to happen by verifying if both compared values
are scalar or not before comparing them with each other.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-07-28 05:01:58 +02:00
Axel Wargnier 4f3aa90d1f Fix postalCode for Portugal (PT) 2018-07-25 12:33:08 +02:00
Henrique Moody b26ed6bf39
Simplify "AbstractComposite" class
There is a log of magic in the "AbstractComposite" that allows an user
to add a rule in multiple ways, remove rules, verify if a rule is
inserted or not. Because of that the class has a lot of complexity and
for unnecessary reasons since we do not use these features internally.

The ideal would be to make this class immutable, however due to many
usages is not possible to do it now, but that is the plan for a near
future - hopefully.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-07-24 08:07:18 +02:00
Danilo Benevides 861216c690
Apply contribution guidelines to "Image" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-07-23 21:55:54 +02:00
Henrique Moody fd2bae7352
Enforce the use of "@covers" annotation
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-07-23 21:37:38 +02:00
Henrique Moody e044e4b16e
Add some code standards for PHPUnit tests
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-07-23 20:46:18 +02:00
Danilo Benevides f308e7962e
Apply contribution guidelines to "Multiple" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-07-16 08:15:57 +02:00
Wojciech Frącz 83bb6e3fc9
Fix wrong behavior when using templates
When a template is set for a chain of rules, does not really matter
which messages the chain can have, the only message to be used should be
the one based on the defined template.

This commit set the same template of a parent rule to its children's
exception. Our first thought was to set the template to its children
however that would mean that if another rule would be added to the chain
we would have to set it as well. Doing that to the children's exception
make sure we only do that once.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-07-02 07:57:21 +02:00
Singwai Chan c5978eb5b0
Create "Subset" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-07-01 15:08:07 +02:00
Islam Elshobokshy e70c201691
Make clear that "Alnum" rule accepts whitespaces
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-07-01 14:27:41 +02:00
William Espindola 5f684e246f
Apply contribution guidelines to "EndsWith" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-07-01 14:11:56 +02:00
Sebastian 8fc2484428
Fix postal code for The Netherlands
Postal code for NL allows for a space between the digits and the
letters.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-29 01:10:31 +01:00
Henrique Moody 4fdd2da19e
Fix wrong behavior with nested exceptions
Use the same condition to not include child exception into the iterator
to also not show the message of the main exception when using
"getFullMessage()".

The method created to validate that condition should probably be in the
"ValidationException" itself, but this commit is meant to be a bug fix,
which will be released in a PATH version, and creating this public
method would imply that a MINOR version should be released.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-29 00:50:27 +01:00
Adam Benson f5ca4a298a
Fix "IntVal" considering boolean values as valid
The commit 54d17ab tried to fix the that "IntVal" would pass with values
that are not considered as an integer, but it does not change

Even thought the commit 54d17ab fixes part of the wrong behaviour it
left out the filter for boolean values.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-28 22:09:42 +01:00
Danilo Benevides de53a4b4bd
Apply contribution guidelines to "IntVal" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-23 21:43:05 +02:00
Danilo Benevides f486d521cb
Apply contribution guidelines to "PerfectSquare" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-23 21:43:02 +02:00
William Espindola dc3951edf1
Apply contribution guidelines to "Each" rule
Also removed the possibility of validating keys once it's possible to
reach the same behavior by combining this rule with "Call" rule.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-23 21:40:39 +02:00
Henrique Moody 70eb87bd77
Merge branch '1.1' 2018-06-23 21:37:53 +02:00
Henrique Moody 54d17abcee
Do not consider any float as integer
Values like "500.00" or 1.0 should not be considered as integer values
even though there is no data loss when they're converted to integer.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-23 21:15:38 +02:00
Henrique Moody 2ab1f11c99
Create "Equivalent" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-23 17:38:53 +02:00
William Espindola 515b23e02f
Apply contribution guidelines to "Exists" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-20 22:34:21 +02:00
William Espindola 01d6e40da4
Apply contribution guidelines to "Executable" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-20 22:34:21 +02:00
paul karikari c44faf0d3f
Apply contribution guidelines to "Uploaded" rule
Also introduce "uopz" extension in order to create tests for "Uploaded"
rule.

Signed-off-by: Paul Karikari <paulkarikari1@gmail.com>
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-20 22:34:21 +02:00
William Espindola 0413afc226
Apply contribution guidelines to "Directory" rule
Also consider PHP's "Directory" class as a valid directory.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-20 22:34:21 +02:00
paul karikari 97e94cafcc
Apply contribution guidelines to "Unique" rule
Signed-off-by: Paul Karikari <paulkarikari1@gmail.com>
2018-06-18 23:15:19 +02:00
William Espindola a463f8ab2d
Apply contribution guidelines to "CurrencyCode" rule
Also makes the rule case-sensitive since that is how ISO 4217
shows the currency codes.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-18 20:55:43 +02:00
Emmerson Siqueira 6124176c89
Add support to Countable type for ComparisonHelper
Signed-off-by: Emmerson Siqueira <emmersonsiqueira@gmail.com>
2018-06-18 11:13:16 +02:00
paul karikari 5a326b6c97
Apply contribution guidelines to "Type" rule
Also add integration test for Type rule.

Signed-off-by: Paul Karikari <paulkarikari1@gmail.com>
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-15 22:12:17 +02:00
paul karikari 8aa6426ab1
Apply contribution guidelines to "TrueVal" rule
Also add integration test for TrueVal rule.

Signed-off-by: Paul Karikari <paulkarikari1@gmail.com>
2018-06-15 22:12:17 +02:00
paul karikari 8573d5f064
Apply contribution guidelines to "Tld"
Also check if input is scalar before validation.

Signed-off-by: Paul Karikari <paulkarikari1@gmail.com>
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-15 22:12:17 +02:00
William Espindola 8bd7428fe1
Apply contribution guidelines to "CreditCard" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-15 22:12:17 +02:00
William Espindola a79e702173
Apply contribution guidelines to "CountryCode" rule
The "AbstractSearcher" already does most of the job that "CountryCode"
was doing, so using it as parent class made more sense. That also makes
the validation case-sensitive which is not a problem since the standard
ISO 3166-1 in fact enforces an specific case for the country codes.

The documentation about the rule is also updated.

Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-15 18:49:52 +02:00
William Espindola 527553ce99
Apply contribution guidelines to "Cnpj" rule 2018-06-15 17:24:19 +02:00
William Espindola b507d928c1
Apply contribution guidelines to "Cnh" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-11 22:24:28 +02:00
William Espindola 8272f43207
Apply contribution guidelines to "Charset" rule
Also change the constructor of the rule to accept charsets as arguments
instead of being either an array or a string.

Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-11 22:24:28 +02:00
William Espindola 9b4c4ddb4b
Apply contribution guidelines to "Callback" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-11 18:47:28 +02:00
Henrique Moody 1255532501
Apply contribution guidelines to "FilterVar" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-11 18:40:05 +02:00
Henrique Moody 8c41838abe
Apply contribution guidelines to "Url" rule
Also fix a type in the exception message of the "Url" rule.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-11 18:22:09 +02:00
William Espindola 99466513b2
Apply contribution guidelines to "Bsn" rule 2018-06-10 13:01:10 -03:00
William Espindola 68b3f207f8
Apply contribution guidelines to "BoolVal" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-09 08:54:42 +02:00
William Espindola 0010ffffb5
Apply contribution guidelines to "Base64" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-09 08:54:39 +02:00
William Espindola f817655a82
Apply contribution guidelines to "Base" rule
Also create a default template for the BaseException.

Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-09 08:54:34 +02:00
Ismael Elias 6e26ba8837
Apply contribution guidelines to "PrimeNumber" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-09 08:54:30 +02:00
Danilo Benevides 1e89dc26ea
Apply contribution guidelines to "NoWhitespace" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-09 08:54:25 +02:00
paul karikari 1bde3a8e49
Apply contribution guidelines to "Email" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
Signed-of-by: Paul Karikari <paulkarikari1@gmail.com>
2018-06-09 08:54:18 +02:00
Danilo Benevides 5fc04558d6
Apply contribution guidelines to "Odd" rule
Also does not allow validation of non-numeric values.

Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-06 08:00:58 +02:00
Ismael Elias c2f6876e4f
Apply contribution guidelines to "Negative" rule
Also does not allow validation of non-numeric values.

Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-06 08:00:58 +02:00
Ismael Elias 72933a718f
Apply contribution guidelines to "Positive" rule
Also does not allow validation of non-numeric values.

Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-05 22:26:58 +02:00
Danilo Benevides c422dc39e4
Apply contribution guidelines to "FloatVal" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-05 09:24:07 +02:00
Danilo Benevides b29bdbd111
Apply contribution guidelines to "Lowercase" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-05 09:22:18 +02:00
William Espindola 36be04c520
Apply contribution guidelines to "AlwaysInvalid" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-04 09:12:14 +02:00
William Espindola 49131c87a7
Apply contribution guidelines to "AlwaysValid" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-04 09:12:11 +02:00
William Espindola b6e3fc6ac0
Apply contribution guidelines to "Cpf" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-04 09:12:07 +02:00
William Espindola 8f47cc37d6
Apply contribution guidelines to "Countable" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-04 09:12:04 +02:00
William Espindola 4976fbaf48
Apply contribution guidelines to "Contains" rule
Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-04 09:11:58 +02:00
Danilo Benevides d1932b2e7f
Apply contribution guidelines to "Uppercase" rule
Also make sure that "Uppercase" only accepts strings.

Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-06-02 16:03:11 +02:00
Henrique Moody df9ae14100
Apply contribution guidelines to "IterableType" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-06-01 14:23:41 +02:00
Henrique Moody 24c2ba8faa
Make "Min" always inclusive
Since the rule "GreaterThan" was created, there is no reason to allow
"Min" to not be inclusive.

Also apply contribution guidelines to the rule.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-31 17:14:23 +02:00
Emmerson Siqueira 9eb159f3d9
Rename "MaximumAge" and "MinimumAge" rules
Those rules were renamed to keep consistent with other rules such as
'Max' and 'Min'.

Signed-off-by: Emmerson Siqueira <emmersonsiqueira@gmail.com>
2018-05-31 17:01:15 +02:00
Emmerson Siqueira 271ddd1fe0
Rename 'Prnt' rule to 'Printable'
This changes the rule name in order to be more descriptive and explicit
(avoid abbreviation). It also applies the new contribution guidelines.

Signed-off-by: Emmerson Siqueira <emmersonsiqueira@gmail.com>
2018-05-31 16:00:43 +02:00
Henrique Moody 6351f7a092
Make "Max" always inclusive
Since the rule "LessThan" was created, there is no reason to allow "Max"
to not be inclusive.

Also apply contribution guidelines to the rule.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-31 15:51:57 +02:00
Henrique Moody da6abf4bdd
Make "Between" always inclusive
Generally speaking it makes more sense to have it always inclusive. Even
though the word "between" does not imply that it is inclusive or
exclusive it's more natural this way.

Besides, users can always use "GreaterThan" and "LessThan" rules in case
that is necessary.

Removing this boolean parameter reduces a bit of the complexity of the
rule.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-31 15:10:59 +02:00
Henrique Moody 9b20d6dae2
Create "GreaterThan" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-31 14:47:22 +02:00
Henrique Moody 9d0d750a18
Create "LessThan" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-31 14:01:45 +02:00
Emmerson Siqueira 0a031649a8
Apply contribution guidelines to "Attribute" rule
Signed-off-by: Emmerson Siqueira <emmersonsiqueira@gmail.com>
2018-05-31 13:50:36 +02:00
paul karikari 51ec5e1b95
Apply contribution guidelines to "Even" rule
Also add an extra validation to the rule, not allowing non-integers to
be considered as even numbers.

Co-Authored-By: Henrique Moody <henriquemoody@gmail.com>
2018-05-31 08:37:38 +02:00
Henrique Moody 71ecea32e6
Make getMessages() return the names or ids as keys
This method change the behavior of "getMessages()" by changin the keys
of its return to the "id" of the specific exception that was triggered.

It also allows users to overwrite the templates by passing an array to
it.

This is being requested by many users for a long time. It took that long
because I was thinking too much about how to improve the old method
called "findMesssage()" that I didn't realize that it could be done in a
easier way with the "getMessages()".

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-28 08:38:30 +02:00
Henrique Moody 8c529c433e
Refactor ValidationException
Make the ValidationException a little bit less mutable than before. All
its dependencies are now passed into the constructor.

This commit also make the Factory pass the translator to the exceptions
allowing to define the translator before the exception gets created.
This change is not the ideal one, later I would like to not need the
Singleton from the Factory to do that, but for now it seems like a good
approach.

One more thing that this commit does is to introduce the "id" for
Exceptions. Key can be either the defined "name" or the name of the rule
that throwed the exception. This method will be handy to identify
exceptions better.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-27 16:12:05 +02:00
Henrique Moody d7ebb8c1a7
Remove "Interface" suffix from exceptions
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-27 16:12:05 +02:00
Henrique Moody 64ec329663
Remove findMessages() from NestedValidationException 2018-05-27 16:12:05 +02:00
Henrique Moody c26db7287f
Use getMessage() instead of getMainMessage()
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-27 16:12:05 +02:00
Henrique Moody 0e81792ec8
Remove method stringify from ValidationException
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-27 16:12:05 +02:00
Henrique Moody bc472a6f0e
Fix coding standards
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-24 08:46:49 +02:00
Henrique Moody e203f8aec5
Apply contribution guidelines to "ObjectType" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-19 19:12:59 +02:00
Henrique Moody 34d42a0d70
Apply contribution guidelines to "CallableType" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-05-19 17:07:59 +02:00
Bram Van der Sype 7b5a2928ff Apply contribution guidelines to "NotEmpty" rule 2018-05-02 16:04:05 +02:00
Emmerson Siqueira 2bcc164b35
Apply contribution guidelines to "ArrayVal" rule
Signed-off-by: Emmerson Siqueira <emmersonsiqueira@gmail.com>
2018-04-02 23:19:22 +02:00
Henrique Moody bfdea5b5bd
Apply contribution guidelines to "ResourceType" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-03-27 00:44:48 +02:00
Henrique Moody ad9cab5daf
Apply contribution guidelines to "NullType" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-03-27 00:32:05 +02:00
Henrique Moody 435187298a
Apply contribution guidelines to "IntType" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-03-27 00:25:26 +02:00
Henrique Moody ec8cb734b3
Apply contribution guidelines to "FloatType" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-03-27 00:17:34 +02:00
Henrique Moody 8465180062
Apply contribution guidelines to "BoolType" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-03-27 00:09:58 +02:00
Henrique Moody 8ad7b208c2
Fix coding standards in PHPT file 2018-03-26 23:25:20 +02:00
Henrique Moody 10ce811f0e Make "Between" rule extend "AbstractEnvelop"
The "Between" rule is composed by two rules: "Min" and "Max". However it
has its specific exception and message. This commit makes it extend the
"AbstractEnvelop" class.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-03-22 19:47:57 +01:00
Henrique Moody e879c62f60 Create "AbstractEnvelope" class
This abstract class is very similar to "AbstractWrapper" the difference
is that "AbstractWapper" will throw the exceptions of the rule that is
defined inside it, while "AbstractEnvelope" uses the exception of the
rule that extends it.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-03-22 19:41:10 +01:00
Henrique Moody 04b3c78ba7 Use ValidationException when no exception is found
Before this change every create rule must have an exception. This commit
allows to create rules without specific exceptions, so when the
exception of the rule is not found Validation uses ValidationException
instead.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2018-03-22 19:28:53 +01:00
Emmerson Siqueira ad61c49eca Apply contribution guidelines to "ArrayType" rule 2018-03-16 11:19:14 +01:00
Henrique Moody 2069e706b8
Apply contribution guidelines to "StringType" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
Co-authored-by: Emmerson Siqueira <emmersonsiqueira@gmail.com>
2018-03-09 15:56:10 +01:00
Henrique Moody 848c57d5ed
Apply contribution guidelines to "ScalarVal" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
Co-authored-by: Emmerson Siqueira <emmersonsiqueira@gmail.com>
2018-03-09 15:07:58 +01:00
Henrique Moody b696070874
Refactor "KeySet" rule
Do not extend AllOf exception, but instead extend "AbstractWrapper".
2018-03-03 18:59:36 +01:00
Henrique Moody 60e3fc3740
Refactor "Between" rule
The "Between" rule was extending the "AllOf" rule and adding "Max" and
"Min" rules to the chain. Because of that, when the rule failed we could
get the "MinException" or the "MaxException" exception, and only if both
failed that we would get the "BetweenException".

With this change it will always get the "BetweenException" which makes
it more explicit.

Also, the "Between" is not using the same standard required in the
Contribution Guidelines.
2018-03-03 18:06:26 +01:00
Henrique Moody 8d44bc3407
Refactor rules related to age
The "Age" rule was removed because it had too many responsibilities.
Instead "MaximumAge" was created (since there is already "MinimumAge").

This commit also introduces "AbstractAge" rule that is been used in both
mentioned rules.
2018-02-24 09:28:54 +01:00
Jens Segers 51ce465b8c
Create "Nullable" rule 2018-02-23 09:20:51 +01:00
Henrique Moody 92a8ab13cf
Fix coding standards
These are the changes after running the last version of PHP-CS-Fixer.
2018-02-04 01:00:30 +01:00
Henrique Moody fb2ebaf5d6
Apply contribution guidelines to "DateTime" rule
This commit also makes some changes in how the `DateTime` rule behaves,
by not accepting `DateTimeInterface` as valid when a format is given.

Also:
- Create `DateTimeHelper` to eliminate some code duplication;
- Create integration tests for `DateTime` rule;
- Rename "format" placeholder to "sample" in the message;
- Update documentation of "DateTime" rule.
2018-01-30 20:17:10 +01:00
Henrique Moody 2007c7dc6e
Create "Time" rule 2018-01-30 09:47:41 +01:00
Henrique Moody 0db1cd6e1b
Create "Date" rule 2018-01-29 09:39:57 +01:00
Henrique Moody c80524b457
Method assert() should not have a return value
One this method should throw an exception when the input is not valid,
returning `TRUE` when it succeeds is not really consistent.
2018-01-28 17:38:40 +01:00
Henrique Moody 30dc089565
Method check() should not have a return value
One this method should throw an exception when the input is not valid,
returning `TRUE` when it succeeds is not really consistent.
2018-01-28 17:38:40 +01:00
Henrique Moody aa7d84c3ea
Refactor "AbstractWrapper" class
This commit also creates `AbstractLocaleWrapper` to help creating
locale-based rules.
2018-01-28 13:20:27 +01:00
Henrique Moody 550795c1e2
Move namespace "SubdivisionCode" to "Locale" 2018-01-28 13:06:55 +01:00
Henrique Moody 9bad066765
Apply contribution guidelines to "AbstractSearcher"
Refactor `AbstractSearcher` class and its children. Also most of the
unnecessary logic that was on `AbstractSearcher` was put back into `In`
class.

This commit also updates all "SubdivisionCode" rules.

The script used to create the classes can be found on:
https://gist.github.com/henriquemoody/ec404f994a87b18c7771
2018-01-19 21:41:34 +01:00
Henrique Moody c33bcce239
Create UndefinedHelper trait
In order to remove some code duplication and make this validation
reusable that the trait `UndefinedHelper` is being created.
2018-01-18 21:02:01 +01:00
Henrique Moody 2a2bb6dd76
Apply contribution guidelines to "Identical" rule 2018-01-15 09:35:22 +01:00
Henrique Moody 02b51782c3
Apply contribution guidelines to "Equals" rule 2018-01-15 09:16:45 +01:00
Henrique Moody 1f217dda66
Refactor Factory class
With this code the Factory class will be used also to create Exceptions.

In order to do that, the AbstractRule::reportError() was changed, so the
tests of the AbstractRule class.

What this commit also does:
- Port code to PHP 7;
- Do not keep the default instance of the Factory in the Validator
  class;
- Make Factory final.
2018-01-14 16:26:35 +01:00
Henrique Moody fe3654b270
Improve RuleTestCase class
- Add documentation to the class and its methods;
- Move RuleTestCase to Test namespace;
- Use PHP 7 type hinting;
- Rename getRuleMock() to createValidatableMock().
2018-01-07 14:32:05 +01:00
Henrique Moody 2d7e2ea48f
Add "respect/stringifier" as dependency
Due to this change it was possible to identify that NotEmptyException,
and NotOptionalException where not working as they should. A fix was
made along with this commit.
2018-01-06 14:07:03 +01:00
Henrique Moody ef975629f3
Changes on PHP-CS-Fixer configuration
Because of `declare(strict_types=1)` some changes were necessary.
2018-01-04 17:59:37 +01:00
Henrique Moody b10206bd28
Merge branch '1.1' 2018-01-02 22:57:58 +01:00
Henrique Moody ee9e69776a
Merge branch '1.0' into 1.1 2018-01-02 22:47:22 +01:00
Henrique Moody c931e2504b
Change conditions for Domain validation
Domains can have `--` as long as they don't start or end with `-` in its
parts.
2018-01-02 22:24:43 +01:00
Henrique Moody 37a71de7d0
Try to find template from default templates first
When executing `ValidationException::setTemplate()` using a template
key, it does not try to select the template, but instead it uses the
template key as the template itself.

In order to fix this behaviour, there is now a check for a key with the
defined template. In case the template was not found, use the defined
template as the template itself.
2018-01-02 21:56:07 +01:00
Henrique Moody d072b4de6a
Remove "malkusch/bav" as dependency
And was that, without warning that the "malkusch/bav" package was
removed from Packagist. This commit removes it as dependency but do not
remove any class that uses it in case there is a user loading the
package from a VCS repository with Composer.
2018-01-02 21:45:22 +01:00
Henrique Moody fa030637cc
Fix wrong call to PHPUnit assertions
The assertion methods are all static, therefore they should be called
with self::assert* instead of $this->assert*.
2017-11-12 14:35:19 +01:00
Gabriel Caruso 93ce9cb93a
Updated to PHPUnit 6 2017-11-12 14:22:22 +01:00
Henrique Moody 5b7ea399c0
Fix coding standards 2017-11-12 14:21:46 +01:00
Henrique Moody d8e5f305a7
Remove "malkusch/bav" as a dependency
This packages is not maintained anymore, therefore it should be removed
from our codebase.
2017-11-12 13:59:05 +01:00
Henrique Moody 20979898c5
Merge branch '1.1' 2017-10-17 12:38:16 +02:00
Henrique Moody 22f1f14430
Merge branch '1.0' into 1.1 2017-10-17 12:15:51 +02:00
Henrique Moody 14572537fe
Improve "Phone" rule
- Only allow spaces and not "\t" or "\n";
- Once the number has a "(", it needs a ")".
2017-10-17 09:51:09 +02:00
RCooLeR 191ee47fc0
Update regex of "Phone" rule
Now regex also matches +1 (555) 555 5555
2017-10-17 08:58:47 +02:00
mazanax 8b3790103e
Create "Luhn" rule 2017-10-16 20:38:56 +02:00
Henrique Moody fd1964d887
Merge branch '1.1' 2017-10-16 10:43:22 +02:00
Henrique Moody 631affdbf2
Merge branch '1.0' into 1.1 2017-10-16 10:39:15 +02:00
Henrique Moody 658764a47f
Skip MimetypeTest when in HHVM 2017-10-16 10:16:47 +02:00
Jens Segers 7d42813fb7
Create "Base64" rule 2017-10-15 19:38:31 +02:00
Dick van der Heiden 327297ca6f
Create "Uuid" rule 2017-10-15 18:34:38 +02:00
Ian d65e713080
Improve grammar of "Equals" rule 2017-10-15 18:27:36 +02:00
Mikhail Vyrtsev 115ec0cd66 fix fix assertion when neighbour values are equal >_< 2017-06-29 06:00:26 +03:00
Mikhail Vyrtsev ce3597bce5 fix assertion when neighbour values are equal 2017-06-29 05:54:48 +03:00
Mikhail Vyrtsev 8d8735cdd0 fix indentation >_< 2017-06-29 05:42:29 +03:00
Mikhail Vyrtsev 52c8541b9e New rule: Sorted 2017-06-29 05:18:02 +03:00
Henrique Moody 0338e18e83
Rename rule "Date" to "DateTime"
Also change rules to use `DateTimeInterface` and `DateTimeImmutable`
when possible.
2017-05-01 13:16:59 +02:00
Henrique Moody 14d87da7d8
Fix minor code standards 2017-05-01 09:36:41 +02:00
Vitaliy 82f53d27e1
Create "Number" rule 2017-04-19 09:49:58 +02:00
Krzysztof Śmiałek 04e8b72908 Create "Unique" rule 2017-04-12 11:23:44 +02:00
Senén b2faf8332b Fix Nif Validator 2017-04-11 23:16:58 +02:00
Bruno Koga a0ba215524
Create "Pis" rule 2017-03-27 11:42:24 +02:00
Jonathan Stewmon 8851fb5abc
Always display message for AbstractRelated rule
`NestedValidationException` should include all `AbstractRelated` rule
exceptions.

`AbstractRelated` rule failures always indicate an interesting nested
context, which should not be omitted from the final result.

`NonOmissibleExceptionInterface` is a marker interface for
exceptions thrown by instances of `AbstractRelated`, which
facilitates identification of those rules' exceptions with
`instanceof`.
2017-03-27 10:21:45 +02:00
Henrique Moody 88e60b6a3a
Fix coding standard on PHPT file 2017-03-26 19:58:01 +02:00
Henrique Moody 2b8c560db4
Merge branch '1.1' 2017-03-14 10:46:47 +01:00
Henrique Moody 5ab87d1dd9
Merge branch '1.0' into 1.1 2017-03-14 10:44:11 +01:00
Henrique Moody dc869ac375
Only return "name" as is if it's a string 2017-03-14 10:28:03 +01:00
Henrique Moody b43c9b103b
Better message for Length rule
Update exception message when minimum value and maximum value are the
same.
2017-02-12 18:18:39 +01:00
Bogus bb5ad2d988
Replaced TLDs with current list from IANA 2017-02-08 09:22:25 +01:00
Henrique Moody 3bccf23673
Fix code standards on callback 2017-02-05 15:53:47 +01:00
Henrique Moody 86623fc3ca
SimpleXMLElement can also be used as an array 2017-02-05 15:03:48 +01:00
Bradyn Poulsen d48b55a092
Create "OneOf" rule 2017-02-05 14:49:07 +01:00
Henrique Moody 7ee4ae47d5
Rename "OneOf" to "AnyOf" 2017-02-05 12:28:08 +01:00
Henrique Moody 27d35987be
Create "StringVal" rule 2017-02-04 15:16:00 +01:00
Henrique Moody d67394cd39
Escape fully qualified class names 2017-02-04 14:01:14 +01:00
Henrique Moody 25bffa00e2
Merge branch '1.1' 2017-01-26 15:41:19 +01:00
Henrique Moody 03f4abbd08
Merge branch '1.0' into 1.1 2017-01-26 15:39:48 +01:00
Renato Moura e4ae02fe94
Fix "Cnpj" rule 2017-01-25 17:41:21 +01:00
Andy Snell 94a79c033a
Update MasterCard BIN Range
Updates the CreditCard validator regex for the MasterCard brand to match 16-digit card numbers starting with 22 - 27.  Additionally, updates the unit test for CreditCard with a published test card in the new BIN range.

Additional information on the BIN range update can be found at: https://www.mastercard.us/en-us/issuers/get-support/2-series-bin-expansion.html
2016-12-04 23:56:43 -05:00
Henrique Moody e708edd005
Rename rule "Numeric" to "NumericVal" 2016-11-06 18:45:44 +01:00
Henrique Moody 6f5c623926
Use class constant instead of FQCN 2016-10-30 20:16:13 +01:00
Henrique Moody f34a34c0b2
Always use mbstring functions 2016-10-30 10:45:30 +01:00
Henrique Moody 4d72af312f
Update PHP-CS-Fixer settings 2016-10-30 10:39:23 +01:00
Henrique Moody f2bb77bb8e
Create tests for "egulias/email-validator" ~2.1 2016-10-29 15:37:09 +02:00
Henrique Moody c65e1e37f9
Merge branch '1.1' 2016-10-29 15:30:23 +02:00
Henrique Moody 710e807a68
Merge branch '1.0' into 1.1 2016-10-29 15:29:17 +02:00
Henrique Moody f82fcf0762
Prevent "Regex" to process non-string inputs 2016-10-29 15:21:14 +02:00
Julián Gutiérrez 195a8fe534
Create "Nif" rule
Rule to validate spanish NIF (DNI/NIE/CIF).
2016-10-09 17:50:52 +02:00
Henrique Moody 639cfdb3c7
Replace getMock() by createMock() 2016-09-20 08:46:56 +02:00
Henrique Moody 08ea9b7925
Merge branch '1.1' 2016-09-20 08:45:34 +02:00
Henrique Moody e457f19dbd
Merge branch '1.0' into 1.1 2016-09-20 08:44:39 +02:00
Henrique Moody 98050476c6
Always return a valid exception
If calling the method `getExceptionForPath()` when the exception was
nested but had no child it was returning null. This commit ensures that
it always return a valid exception.
2016-09-19 18:22:39 +02:00
Henrique Moody 6ee9776ea9
Merge branch '1.1' 2016-09-19 11:25:42 +02:00
Henrique Moody 3fa5bc0489
Merge branch '1.0' into 1.1 2016-09-19 11:24:33 +02:00
Emmerson d0a98ae5d3
Date rule accepting scalar and DateTimeInterface 2016-09-19 10:13:01 +02:00
Tomasz Regdos 38aedd01e3
Create "Vatin" rule (VAT identification number)
See https://en.wikipedia.org/wiki/VAT_identification_number
2016-09-19 09:50:50 +02:00
Henrique Moody 332b0d7bb6
Merge branch '1.1' 2016-09-19 09:33:16 +02:00
Henrique Moody c79d8fdf4f
Change file mode of "Image" rule 2016-09-19 09:32:42 +02:00
Gabriel Pedro a772d7f89a
Replace CNH validation algorithm
The old algorithm not working with some CNH values, e.g 00641829409.

You can even do some checking on
http://www.detran.pr.gov.br/modules/catasg/servicos-detalhes.php?tema=motorista&id=239.

Original algo can be found on
http://forum.imasters.com.br/topic/400293-validate-br.
2016-09-18 13:25:18 +02:00
Henrique Moody 4eb6d8090f
Merge branch '1.1' 2016-09-17 21:39:18 +02:00
Henrique Moody edf4e49ac6
Merge branch '1.0' into 1.1 2016-09-17 21:30:00 +02:00
Henrique Moody 4bcc4027f8
Try to use the getRelatedByName() method first
Then using the `findMessages()` method, tries to use the method
`getRelatedByName()` before using the `findRelated()` method.

This change was made because since on `KeyNested` rule you may have
names with '.' we'll never get the proper exception using
`findRelated()`.
2016-09-17 21:11:55 +02:00
Henrique Moody 98443bad0c
Get the proper exception when using findMessage() 2016-09-17 21:04:24 +02:00
Henrique Moody 494b67871f
Fix wrong behaviour on AbstractRelated
When you define the name for an `AbstractRelated` instance, you expect
that it also define the name for its child. But, when the child already
had a name the `AbstractRelated` was overwriting its name with the
`reference`.
2016-09-17 20:23:38 +02:00
Henrique Moody d716214258
Merge branch '1.1' 2016-09-13 11:33:55 +02:00
Henrique Moody 6d0e3a2422
Merge branch '1.0' into 1.1 2016-09-13 11:32:43 +02:00
Henrique Moody 7e88a7a0c8
Always check the type then executing KeyNested 2016-09-12 18:06:10 +02:00
Henrique Moody fb471f9667 Remove deprecated "Iterable" rule 2016-08-03 11:08:22 +02:00
Henrique Moody 89c82b2fa2 Merge branch '1.1' 2016-08-03 10:54:28 +02:00
Henrique Moody cc179f9209 Merge branch '1.0' into 1.1 2016-08-03 10:53:00 +02:00
Henrique Moody e5fdd87a16 Rename "Iterable" to "IterableType" 2016-08-03 10:43:33 +02:00
Royall Spence 0d4659c08f replace deprecated getMock with createMock 2016-07-29 20:47:42 -04:00
Henrique Moody d2c8b4db63 Merge branch '1.1' 2016-07-01 16:23:01 +02:00
Tomasz Regdos 73a9ff40eb Fix Pesel validator when first char is zero 2016-07-01 16:22:12 +02:00
Henrique Moody 8b7f48c3b7 Upgrade PHPUnit version 2016-05-25 23:25:28 +02:00
Henrique Moody 3e1988f9c1 Merge branch '1.0' into 1.1 2016-05-05 13:03:25 +02:00
Emmerson d9a4c78b16 Fixes 'KeySet' rule when input is not array type 2016-05-05 13:01:04 +02:00
Kennedy Tedesco cca733919c Throw an exception when age is not an integer 2016-04-23 21:43:19 -03:00
Augusto Pascutti 9460a4c237 Ensure namespace separator on appended prefixes
Appending a prefix to search new rules under required that the namespace
(prefix) being added always ended with a trailing namespace character so
rules could successfully be found under it. This ensures that the
separator is always present.

Changes a test for a rule which does not implement Respect's interface
to an actual class so we don't need to declare one to use as a stub.
2016-04-23 21:20:54 -03:00
Henrique Moody bb0e40a08e Set template for the only rule in the chain
When there is just one rule in the chain and the there is a defined
template for that, the expected behaviour when using the `check()`
method is to see the exception message with the defined template.
2016-04-08 13:39:57 -03:00
Henrique Moody 46541c7e46 Allow the define brands for credit card validation 2016-04-06 16:42:49 -03:00
Henrique Moody f3ad53dd14 Merge branch '1.0' 2016-03-31 14:44:58 -03:00
Henrique Moody 294368294f Merge branch '0.9' into 1.0 2016-03-31 14:39:15 -03:00
Henrique Moody 7d978d64e3 Merge branch '0.8' into 0.9 2016-03-31 14:26:10 -03:00
Henrique Moody eecc696792 Fix wrong date parsing on Date rule
The `DateTime::createFromFormat()` tries to guess the date too much and
sometimes wrong parsing may happen:

```php
echo DateTime::createFromFormat('Ym', '202309')->format('Ym');
```

The output of the above code is "202310", not "202309".

Using `date_parse_from_format()` we get a more precise parsing.
2016-03-31 14:18:22 -03:00
Emmerson f40eb63d7b Create "PhpLabel" rule 2016-03-04 21:48:25 -03:00
Henrique Moody b1d0acc2e5 Fix some coding standards with php-cs-fixer 2016-03-04 21:42:27 -03:00
Henrique Moody 78449ce9b0 Merge branch '1.0' 2016-02-26 12:22:33 -03:00
Henrique Moody 4b2f159206 Merge branch '0.9' into 1.0 2016-02-26 12:21:26 -03:00
Henrique Moody 7febcf3dd6 Merge branch '0.8' into 0.9 2016-02-26 12:20:26 -03:00
Alasdair North 3bf4957caf AbstractWrapper should pass on setName calls to the wrapped Validatable. 2016-02-26 12:18:05 -03:00
Samuel Heinzmann ce3f885862 Create "Fibonacci" rule 2016-02-13 14:02:21 -02:00
Caio César Tavares d1c3b2596e Define names for the child of Not rule 2016-02-13 13:48:10 -02:00
Henrique Moody c2eece6785 Create "IdentityCard" rule
Original-Author: Tomasz Regdos <tomek@regdos.com>.
2016-01-13 22:57:11 -02:00
Henrique Moody 0662db2a93 Improve tests for Pesel rule
Also increases validation on this rule.
2016-01-13 21:17:05 -02:00
Tomasz Regdos b8da3a947b Create "Pesel" rule
Create validator for PESEL - Polish Human Identification Number.
2015-12-17 11:25:57 -02:00
Guilherme Siani c828420438 Create "Image" rule 2015-12-14 10:14:26 -02:00
Henrique Moody 799228a6e0 Merge branch '1.0' 2015-11-25 18:05:51 -02:00
Henrique Moody b85ed687f2 Merge branch '0.9' into 1.0 2015-11-25 17:59:49 -02:00
Henrique Moody d63cae970b Merge branch '0.8' into 0.9 2015-11-25 17:54:31 -02:00
Tomasz Regdos ecf4d5bb63 Fix PL postal code format 2015-11-25 17:44:59 -02:00
Emmerson eae8ccb72a Fix Age integration tests 2015-11-16 19:20:39 -03:00
William Espindola ecbc5c0a94 Create integration tests for "Age" role 2015-11-09 06:54:51 -02:00
William Espindola f2083a58d7 Create integration tests for "Bsn" rule 2015-11-09 06:54:43 -02:00
Henrique Moody db8d8a04f5 Merge branch '1.0' 2015-11-06 12:27:25 -02:00
Henrique Moody 7aaa5c0a83 Merge branch '0.9' into 1.0 2015-11-06 12:25:14 -02:00
Henrique Moody bf5c0bf132 Merge branch '0.8' into 0.9 2015-11-06 12:19:53 -02:00
Felipe Martins e4622df22c PerfectSquare rule check if the sqrt is an integer 2015-11-06 12:11:15 -02:00