Skip to content

Commit

Permalink
Add PHP 8 + Update dependencies (#26)
Browse files Browse the repository at this point in the history
Add PHP 8 to github actions
Fix some differences with skeleton
Include PHPUnit 8.5 and 9.4
- Had to add suffix to FieldValidationTest dataprovider cases to get unique names
  • Loading branch information
bram123 authored Oct 3, 2020
1 parent 7c9ce73 commit fa7cff0
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 41 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ['7.1', '7.2', '7.3', '7.4']
php-versions: ['7.1', '7.2', '7.3', '7.4', '8.0']
composer-flags: ['', '--prefer-lowest']
steps:
- uses: actions/checkout@v2
Expand Down
9 changes: 5 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.idea
vendor
composer.lock
phpunit.xml
/.idea
/vendor
/composer.lock
/phpunit.xml
/.phpunit.result.cache
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@
}
},
"require": {
"php": "7.1.* || 7.2.* || 7.3.* || 7.4.*",
"php": ">=7.1",
"symfony/validator": "^4.3 || 5.*",
"symfony/polyfill-php80": "^1.16"
},
"require-dev": {
"roave/security-advisories": "dev-master",
"squizlabs/php_codesniffer": "^3.5",
"phpmd/phpmd": "@stable",
"phpunit/phpunit": "7.5.*",
"phpunit/phpunit": "7.5.* || 8.5.* || 9.4.*",
"phpstan/phpstan": "0.12.*",
"phpstan/phpstan-phpunit": "0.12.*",
"phpstan/phpstan-symfony": "0.12.*",
Expand Down
14 changes: 13 additions & 1 deletion phpmd.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@
<description>
The Code Size Ruleset contains a collection of rules that find code size related problems.
</description>

<rule ref="rulesets/codesize.xml"/>

<rule ref="rulesets/controversial.xml"/>

<rule ref="rulesets/design.xml">
<exclude name="CouplingBetweenObjects" />
</rule>
Expand All @@ -17,6 +20,15 @@
<property name="maximum" value="21"/>
</properties>
</rule>

<rule ref="rulesets/unusedcode.xml"/>
<rule ref="rulesets/naming.xml"/>

<rule ref="rulesets/naming.xml">
<exclude name="ShortVariable"/>
</rule>
<rule ref="rulesets/naming.xml/ShortVariable">
<properties>
<property name="exceptions" value="e"/>
</properties>
</rule>
</ruleset>
66 changes: 33 additions & 33 deletions tests/Integration/FieldValidationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,23 +83,23 @@ public function dataProviderRequiredFields(): Generator

// field can't be null or empty string
yield "required + filled: true" => ['required', 'unit test', true];
yield "required + filled: false" => ['required|filled', '', false];
yield "required + filled: false" => ['required|filled', null, false];
yield "required + filled: false A" => ['required|filled', '', false];
yield "required + filled: false B" => ['required|filled', null, false];

// field must be a type of alpha
yield "required + alpha: true" => ['required|alpha', 'unit', true];
yield "required + alpha: true" => ['required|alpha', 'unitTest', true];
yield "required + alpha: false" => ['required|alpha', 'unit test', false];
yield "required + alpha: false" => ['required|alpha', 'unit-test', false];
yield "required + alpha: false" => ['required|alpha', 'unit5', false];
yield "required + alpha: true A" => ['required|alpha', 'unit', true];
yield "required + alpha: true B" => ['required|alpha', 'unitTest', true];
yield "required + alpha: false A" => ['required|alpha', 'unit test', false];
yield "required + alpha: false B" => ['required|alpha', 'unit-test', false];
yield "required + alpha: false C" => ['required|alpha', 'unit5', false];
yield "required + alpha_dash: true" => ['required|alpha_dash', 'unit-test_9', true];
yield "required + alpha_dash: false" => ['required|alpha_dash', 'unit test 9', false];
yield "required + alpha_num: true" => ['required|alpha_num', 'unitTest123', true];
yield "required + alpha_num: false" => ['required|alpha_num', 'unit-test_123', false];

// field can be null or filled string, but not empty string
yield "required + filled + nullable: true" => ['required|filled|nullable', 'unit test', true];
yield "required + filled + nullable: true" => ['required|filled|nullable', null, true];
yield "required + filled + nullable: true A" => ['required|filled|nullable', 'unit test', true];
yield "required + filled + nullable: true B" => ['required|filled|nullable', null, true];
yield "required + filled + nullable: false" => ['required|filled|nullable', '', false];

// field must be within a set
Expand All @@ -124,15 +124,15 @@ public function dataProviderRequiredFields(): Generator

// field should be array
yield "required + array: true" => ['required|array', [], true];
yield "required + array: false" => ['required|array', 5, false];
yield "required + array: false" => ['required|array', null, false];
yield "required + array: false A" => ['required|array', 5, false];
yield "required + array: false B" => ['required|array', null, false];
yield "required + array nullable: true" => ['required|array|nullable', null, true];

// field should be integer or integer castable
yield "required + int: true" => ['required|int', 3, true];
yield "required + int: true" => ['required|int', '3', true];
yield "required + int: false" => ['required|int', '3a', false];
yield "required + int: false" => ['required|int', [], false];
yield "required + int: true A" => ['required|int', 3, true];
yield "required + int: true B" => ['required|int', '3', true];
yield "required + int: false A" => ['required|int', '3a', false];
yield "required + int: false B" => ['required|int', [], false];

// field should have min/max integer size
yield "required + int + min size: true" => ['required|int|min:3', '3', true];
Expand All @@ -145,22 +145,22 @@ public function dataProviderRequiredFields(): Generator
yield "required + int + min+max size long: false" => ['required|int|between:3,5', '6', false];

// field nullable should supersede the min:3
yield "required + int + min size + nullable: true" => ['required|int|nullable|min:3', 3, true];
yield "required + int + min size + nullable: true" => ['required|int|nullable|min:3', null, true];
yield "required + int + min size + nullable: true A" => ['required|int|nullable|min:3', 3, true];
yield "required + int + min size + nullable: true B" => ['required|int|nullable|min:3', null, true];
yield "required + int + min size + nullable: false" => ['required|int|min:3', null, false];

// field should be boolean or boolean castable
yield "required + bool: true" => ['required|bool', true, true];
yield "required + bool: true" => ['required|bool', false, true];
yield "required + bool: true A" => ['required|bool', true, true];
yield "required + bool: true B" => ['required|bool', false, true];
yield "required + bool: false" => ['required|bool', null, false];
yield "required + bool + nullable: false" => ['required|bool|nullable', true, true];
yield "required + bool + nullable: false" => ['required|bool|nullable', null, true];
yield "required + bool + int: true" => ['required|bool', 1, true];
yield "required + bool + int: true" => ['required|bool', 0, true];
yield "required + bool + string: true" => ['required|bool', '1', true];
yield "required + bool + string: true" => ['required|bool', '0', true];
yield "required + bool + string: true" => ['required|bool', 'on', true];
yield "required + bool + string: true" => ['required|bool', 'off', true];
yield "required + bool + nullable: false A" => ['required|bool|nullable', true, true];
yield "required + bool + nullable: false B" => ['required|bool|nullable', null, true];
yield "required + bool + int: true A" => ['required|bool', 1, true];
yield "required + bool + int: true B" => ['required|bool', 0, true];
yield "required + bool + string: true A" => ['required|bool', '1', true];
yield "required + bool + string: true B" => ['required|bool', '0', true];
yield "required + bool + string: true C" => ['required|bool', 'on', true];
yield "required + bool + string: true D" => ['required|bool', 'off', true];
yield "required + bool + string: false" => ['required|bool', 'abc', false];

// field should be float or float castable
Expand Down Expand Up @@ -197,19 +197,19 @@ public function dataProviderRequiredFields(): Generator

// rule + constraint combination
yield "required + rule + constraint: true" => [['required', 'string', new Assert\NotBlank()], 'test', true];
yield "required + rule + constraint: false" => [['required', 'string', new Assert\NotBlank()], '', false];
yield "required + rule + constraint: false" => [['required', 'string', new Assert\NotBlank()], 5, false];
yield "required + rule + constraint: false A" => [['required', 'string', new Assert\NotBlank()], '', false];
yield "required + rule + constraint: false B" => [['required', 'string', new Assert\NotBlank()], 5, false];
}

public function dataProviderOptionalFields(): Generator
{
yield "optional: null: success" => ['string', false, false];
yield "optional: null: success" => ['string|nullable', null, true];
yield "optional: null: success A" => ['string', false, false];
yield "optional: null: success B" => ['string|nullable', null, true];
yield "optional: required + string: fail" => ['required|string', false, false];
yield "optional: string + nullable: success" => ['string|nullable', null, true];
yield "optional: string + nullable: fail" => ['string', null, false];
yield "optional: string + filled: fail" => ['string|filled', null, false];
yield "optional: string + filled: fail" => ['string|filled', '', false];
yield "optional: string + filled: fail A" => ['string|filled', null, false];
yield "optional: string + filled: fail B" => ['string|filled', '', false];
yield "optional: string + filled: success" => ['string|filled', 'test', true];
yield "optional: string + nullable + filled: success A" => ['string|nullable|filled', null, true];
yield "optional: string + nullable + filled: success B" => ['string|nullable|filled', 'test', true];
Expand Down

0 comments on commit fa7cff0

Please sign in to comment.