Skip to content

Commit

Permalink
add/fix unittests
Browse files Browse the repository at this point in the history
Merge remote-tracking branch 'remotes/origin/master' into ft-rules

# Conflicts:
#	composer.json
  • Loading branch information
Gummibeer committed Sep 8, 2019
1 parent 24664f0 commit 7d8ba81
Show file tree
Hide file tree
Showing 9 changed files with 182 additions and 35 deletions.
54 changes: 42 additions & 12 deletions .travis.yml
@@ -1,22 +1,52 @@
language: php

php:
- 7.2
- 7.3
cache:
directories:
- $HOME/.composer/cache/files

env:
matrix:
- COMPOSER_FLAGS="--prefer-lowest"
- COMPOSER_FLAGS=""
matrix:
include:
- php: 7.2
env: LARAVEL='5.8.*' TESTBENCH='3.8.*' COMPOSER_FLAGS='--prefer-lowest'
- php: 7.2
env: LARAVEL='5.8.*' TESTBENCH='3.8.*' COMPOSER_FLAGS='--prefer-stable'
- php: 7.3
env: LARAVEL='5.8.*' TESTBENCH='3.8.*' COMPOSER_FLAGS='--prefer-lowest'
- php: 7.3
env: LARAVEL='5.8.*' TESTBENCH='3.8.*' COMPOSER_FLAGS='--prefer-stable'
- php: 7.4snapshot
env: LARAVEL='5.8.*' TESTBENCH='3.8.*' COMPOSER_FLAGS='--prefer-lowest'
- php: 7.4snapshot
env: LARAVEL='5.8.*' TESTBENCH='3.8.*' COMPOSER_FLAGS='--prefer-stable'
- php: 7.2
env: LARAVEL='^6.0' TESTBENCH='^4.0' COMPOSER_FLAGS='--prefer-lowest'
- php: 7.2
env: LARAVEL='^6.0' TESTBENCH='^4.0' COMPOSER_FLAGS='--prefer-stable'
- php: 7.3
env: LARAVEL='^6.0' TESTBENCH='^4.0' COMPOSER_FLAGS='--prefer-lowest'
- php: 7.3
env: LARAVEL='^6.0' TESTBENCH='^4.0' COMPOSER_FLAGS='--prefer-stable'
- php: 7.4snapshot
env: LARAVEL='^6.0' TESTBENCH='^4.0' COMPOSER_FLAGS='--prefer-lowest'
- php: 7.4snapshot
env: LARAVEL='^6.0' TESTBENCH='^4.0' COMPOSER_FLAGS='--prefer-stable'
fast_finish: true
allow_failures:
- php: 7.4snapshot

before_script:
before_install:
- composer config discard-changes true
- travis_retry composer self-update
- travis_retry composer update ${COMPOSER_FLAGS} --no-interaction --prefer-source
- composer require --dev scrutinizer/ocular --no-interaction
- composer require --dev php-coveralls/php-coveralls --no-interaction
- travis_retry composer require --dev "laravel/framework:${LARAVEL}" --no-interaction --no-update
- travis_retry composer require --dev "orchestra/testbench:${TESTBENCH}" --no-interaction --no-update
- travis_retry composer require --dev scrutinizer/ocular --no-interaction --no-update
- travis_retry composer require --dev php-coveralls/php-coveralls --no-interaction --no-update

install:
- travis_retry composer update ${COMPOSER_FLAGS} --prefer-dist --no-suggest --no-interaction

script:
- vendor/bin/phpunit
- vendor/bin/phpunit --coverage-text --coverage-clover=build/clover.xml

after_script:
- php vendor/bin/ocular code-coverage:upload --format=php-clover build/clover.xml
Expand Down
1 change: 1 addition & 0 deletions README.md
Expand Up @@ -44,6 +44,7 @@ By using the `HasEnums` trait, you'll be able to work with the `status` field li
$model = TestModel::create([
'status' => StatusEnum::DRAFT(),
]);
```

You can set the value of an enum field with its textual value:

Expand Down
29 changes: 15 additions & 14 deletions composer.json
Expand Up @@ -24,14 +24,24 @@
],
"require": {
"php": "^7.2",
"illuminate/console": "^5.8",
"illuminate/support": "^5.8",
"illuminate/console": "^5.8 || ^6.0",
"illuminate/support": "^5.8 || ^6.0",
"spatie/enum": "^2.3"
},
"require-dev": {
"orchestra/testbench": "^3.8",
"orchestra/testbench": "^3.8 || ^4.0",
"phpunit/phpunit": "^8.0"
},
"config": {
"sort-packages": true
},
"extra": {
"laravel": {
"providers": [
"Spatie\\Enum\\Laravel\\EnumServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Spatie\\Enum\\Laravel\\": "src"
Expand All @@ -43,16 +53,7 @@
}
},
"scripts": {
"test": "vendor/bin/phpunit"
},
"config": {
"sort-packages": true
},
"extra": {
"laravel": {
"providers": [
"Spatie\\Enum\\Laravel\\EnumServiceProvider"
]
}
"test": "vendor/bin/phpunit",
"test-coverage": "vendor/bin/phpunit --coverage-html=build"
}
}
5 changes: 0 additions & 5 deletions phpunit.xml.dist
Expand Up @@ -20,9 +20,4 @@
<directory suffix=".php">src/</directory>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="build/coverage"/>
<log type="coverage-text" target="build/coverage.txt"/>
<log type="coverage-clover" target="build/clover.xml"/>
</logging>
</phpunit>
8 changes: 4 additions & 4 deletions src/Rules/Enum.php
Expand Up @@ -48,7 +48,7 @@ public function passes($attribute, $value): bool

public function message(): string
{
return Lang::trans('enum::validation.'.$this->rule, [
return Lang::get('enum::validation.'.$this->rule, [
'attribute' => $this->attribute,
'value' => $this->value,
'enum' => $this->enum,
Expand All @@ -59,7 +59,7 @@ public function message(): string
protected function getDisplayableOtherValues(): array
{
return array_map(function ($value): string {
return $this->getTranslation($value) ?? $value;
return $this->getValueTranslation($value) ?? $value;
}, $this->getOtherValues());
}

Expand All @@ -68,9 +68,9 @@ protected function getDisplayableOtherValues(): array
*
* @return string|null
*/
protected function getTranslation($value): ?string
protected function getValueTranslation($value): ?string
{
return Arr::get(Lang::trans('enum::validation.enums'), $this->enum.'.'.Str::slug($this->enum::make($value)->getName(), '_'));
return Arr::get(Lang::get('enum::validation.enums'), $this->enum.'.'.Str::slug($this->enum::make($value)->getName(), '_'));
}

protected function getOtherValues(): array
Expand Down
29 changes: 29 additions & 0 deletions tests/Rules/EnumIndexTest.php
Expand Up @@ -3,6 +3,7 @@
namespace Spatie\Enum\Laravel\Tests\Rules;

use Illuminate\Support\Facades\Lang;
use Illuminate\Support\Facades\Validator;
use Spatie\Enum\Laravel\Tests\TestCase;
use Spatie\Enum\Laravel\Rules\EnumIndex;
use Spatie\Enum\Laravel\Tests\Extra\StatusEnum;
Expand Down Expand Up @@ -45,4 +46,32 @@ public function it_passes_other_to_the_validation_message()
$rule->passes('attribute', 'foobar');
$this->assertEquals('0, 1, 2', $rule->message());
}

/** @test */
public function it_can_resolve_validator_extension_and_pass_validation()
{
$validator = Validator::make([
'attribute' => 1,
], [
'attribute' => 'enum_index:'.StatusEnum::class,
]);

$this->assertTrue($validator->passes());

$this->assertTrue($validator->validateEnumIndex('attribute', 1, [StatusEnum::class], $validator));
}

/** @test */
public function it_can_resolve_validator_extension_and_fail_validation()
{
$validator = Validator::make([
'attribute' => 5,
], [
'attribute' => 'enum_index:'.StatusEnum::class,
]);

$this->assertFalse($validator->passes());

$this->assertFalse($validator->validateEnumIndex('attribute', 5, [StatusEnum::class], $validator));
}
}
29 changes: 29 additions & 0 deletions tests/Rules/EnumNameTest.php
Expand Up @@ -3,6 +3,7 @@
namespace Spatie\Enum\Laravel\Tests\Rules;

use Illuminate\Support\Facades\Lang;
use Illuminate\Support\Facades\Validator;
use Spatie\Enum\Laravel\Rules\EnumName;
use Spatie\Enum\Laravel\Tests\TestCase;
use Spatie\Enum\Laravel\Tests\Extra\StatusEnum;
Expand Down Expand Up @@ -45,4 +46,32 @@ public function it_passes_other_to_the_validation_message()
$rule->passes('attribute', 'foobar');
$this->assertEquals('DRAFT, PUBLISHED, ARCHIVED', $rule->message());
}

/** @test */
public function it_can_resolve_validator_extension_and_pass_validation()
{
$validator = Validator::make([
'attribute' => 'draft',
], [
'attribute' => 'enum_name:'.StatusEnum::class,
]);

$this->assertTrue($validator->passes());

$this->assertTrue($validator->validateEnumName('attribute', 'draft', [StatusEnum::class], $validator));
}

/** @test */
public function it_can_resolve_validator_extension_and_fail_validation()
{
$validator = Validator::make([
'attribute' => 'drafted',
], [
'attribute' => 'enum_name:'.StatusEnum::class,
]);

$this->assertFalse($validator->passes());

$this->assertFalse($validator->validateEnumName('attribute', 'drafted', [StatusEnum::class], $validator));
}
}
33 changes: 33 additions & 0 deletions tests/Rules/EnumTest.php
Expand Up @@ -2,6 +2,7 @@

namespace Spatie\Enum\Laravel\Tests\Rules;

use Illuminate\Support\Facades\Validator;
use InvalidArgumentException;
use Spatie\Enum\Laravel\Rules\Enum;
use Illuminate\Support\Facades\Lang;
Expand Down Expand Up @@ -126,4 +127,36 @@ public function it_passes_translated_other_to_the_validation_message()
$rule->passes('attribute', 'foobar');
$this->assertEquals('entwurf, veröffentlicht, archiviert', $rule->message());
}

/** @test */
public function it_can_resolve_validator_extension_and_pass_validation()
{
$validator = Validator::make([
'attribute' => 1,
], [
'attribute' => 'enum:'.StatusEnum::class,
]);

$this->assertTrue($validator->passes());

$this->assertTrue($validator->validateEnum('attribute', 1, [StatusEnum::class], $validator));
$this->assertTrue($validator->validateEnum('attribute', 'draft', [StatusEnum::class], $validator));
$this->assertTrue($validator->validateEnum('attribute', 'stored archive', [StatusEnum::class], $validator));
}

/** @test */
public function it_can_resolve_validator_extension_and_fail_validation()
{
$validator = Validator::make([
'attribute' => 5,
], [
'attribute' => 'enum:'.StatusEnum::class,
]);

$this->assertFalse($validator->passes());

$this->assertFalse($validator->validateEnum('attribute', 5, [StatusEnum::class], $validator));
$this->assertFalse($validator->validateEnum('attribute', 'drafted', [StatusEnum::class], $validator));
$this->assertFalse($validator->validateEnum('attribute', 'stored draft', [StatusEnum::class], $validator));
}
}
29 changes: 29 additions & 0 deletions tests/Rules/EnumValueTest.php
Expand Up @@ -3,6 +3,7 @@
namespace Spatie\Enum\Laravel\Tests\Rules;

use Illuminate\Support\Facades\Lang;
use Illuminate\Support\Facades\Validator;
use Spatie\Enum\Laravel\Tests\TestCase;
use Spatie\Enum\Laravel\Rules\EnumValue;
use Spatie\Enum\Laravel\Tests\Extra\StatusEnum;
Expand Down Expand Up @@ -45,4 +46,32 @@ public function it_passes_other_to_the_validation_message()
$rule->passes('attribute', 'foobar');
$this->assertEquals('draft, published, stored archive', $rule->message());
}

/** @test */
public function it_can_resolve_validator_extension_and_pass_validation()
{
$validator = Validator::make([
'attribute' => 'stored archive',
], [
'attribute' => 'enum_value:'.StatusEnum::class,
]);

$this->assertTrue($validator->passes());

$this->assertTrue($validator->validateEnumValue('attribute', 'stored archive', [StatusEnum::class], $validator));
}

/** @test */
public function it_can_resolve_validator_extension_and_fail_validation()
{
$validator = Validator::make([
'attribute' => 'stored draft',
], [
'attribute' => 'enum_value:'.StatusEnum::class,
]);

$this->assertFalse($validator->passes());

$this->assertFalse($validator->validateEnumValue('attribute', 'stored draft', [StatusEnum::class], $validator));
}
}

0 comments on commit 7d8ba81

Please sign in to comment.