From dbd86ed377334479fee5f8130e8bf9ab8a1ecd74 Mon Sep 17 00:00:00 2001 From: Vlad Chiovianu Date: Wed, 28 Feb 2024 16:29:17 +0200 Subject: [PATCH 1/7] fixes tests --- src/Services/Validators/Meta.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Services/Validators/Meta.php b/src/Services/Validators/Meta.php index bb81c7d..51542f2 100644 --- a/src/Services/Validators/Meta.php +++ b/src/Services/Validators/Meta.php @@ -106,9 +106,12 @@ private function invalidOptions($options) return false; } - $isLegacyEnum = (class_exists($options) - && ! enum_exists($options) - && new $options() instanceof Enum); + if (! class_exists($options) && ! enum_exists($options)) { + return true; + } + + $isLegacyEnum = ! enum_exists($options) + && new $options() instanceof Enum; $validEnum = $isLegacyEnum || in_array( Select::class, From 439231e55cf581b7c774e23e30f132812fae7edb Mon Sep 17 00:00:00 2001 From: Vlad Chiovianu Date: Tue, 2 Apr 2024 17:58:31 +0300 Subject: [PATCH 2/7] validation fix --- src/Services/Validators/Meta.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Services/Validators/Meta.php b/src/Services/Validators/Meta.php index 51542f2..e6c4961 100644 --- a/src/Services/Validators/Meta.php +++ b/src/Services/Validators/Meta.php @@ -102,7 +102,7 @@ private function selectMetaParameterMissing(): bool private function invalidOptions($options) { - if (! $options) { + if (! $options || (! is_string($options) && $options->count() === 0)) { return false; } From d2c430e1582e6ef822a51b020a0b5d40fd7c745d Mon Sep 17 00:00:00 2001 From: Vlad Chiovianu Date: Tue, 30 Apr 2024 15:45:04 +0300 Subject: [PATCH 3/7] fixes validation --- src/Services/Validators/Meta.php | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/Services/Validators/Meta.php b/src/Services/Validators/Meta.php index e6c4961..2f04a0b 100644 --- a/src/Services/Validators/Meta.php +++ b/src/Services/Validators/Meta.php @@ -102,24 +102,23 @@ private function selectMetaParameterMissing(): bool private function invalidOptions($options) { - if (! $options || (! is_string($options) && $options->count() === 0)) { + if (! $options) { return false; } - if (! class_exists($options) && ! enum_exists($options)) { - return true; - } + if (is_string($options) && (class_exists($options) || enum_exists($options))) { + $isLegacyEnum = ! enum_exists($options) + && new $options() instanceof Enum; - $isLegacyEnum = ! enum_exists($options) - && new $options() instanceof Enum; + $validEnum = $isLegacyEnum || in_array( + Select::class, + array_keys((new ReflectionEnum($options))->getTraits()) + ); - $validEnum = $isLegacyEnum || in_array( - Select::class, - array_keys((new ReflectionEnum($options))->getTraits()) - ); + return ! $validEnum; + } return ! is_array($options) - && ! (is_string($options) && $validEnum) && ! method_exists($options, 'toArray'); } } From 8387992e1b1983960e930d9eabb4975d9a801c87 Mon Sep 17 00:00:00 2001 From: Abdullahi Abdul Kabir Date: Wed, 7 Aug 2024 20:13:02 +0100 Subject: [PATCH 4/7] upgrade L11 --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 8de3c46..ca3b2d4 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,7 @@ ], "require": { "php": "^8.0", - "laravel/framework": "^10.0", + "laravel/framework": "^10.0|^11.0", "laravel-enso/enums": "^2.0", "laravel-enso/helpers": "^3.0" }, @@ -34,7 +34,7 @@ "providers": [ "LaravelEnso\\Forms\\AppServiceProvider" ], - "aliases": {} + "aliases": [] } } } \ No newline at end of file From ad1d2afee3f446df47880eba06e0526d1462127e Mon Sep 17 00:00:00 2001 From: mishu Date: Wed, 14 Aug 2024 09:59:36 +0300 Subject: [PATCH 5/7] improves enum validation for options --- src/Exceptions/Template.php | 3 ++- src/Services/Validators/Meta.php | 27 ++++++--------------------- tests/unit/Services/BuilderTest.php | 7 ++++--- 3 files changed, 12 insertions(+), 25 deletions(-) diff --git a/src/Exceptions/Template.php b/src/Exceptions/Template.php index 2ca0754..72f6e08 100644 --- a/src/Exceptions/Template.php +++ b/src/Exceptions/Template.php @@ -173,7 +173,8 @@ public static function missingInputContent($field) public static function invalidSelectOptions($field) { return new static(__( - '"options" meta parameter for field ":field" must be an array a collection or an Enum', + '"options" meta parameter for field ":field" must be an array a ' + .'collection or an Enum that implements the Select Contract ', ['field' => $field] )); } diff --git a/src/Services/Validators/Meta.php b/src/Services/Validators/Meta.php index 2f04a0b..0721bdd 100644 --- a/src/Services/Validators/Meta.php +++ b/src/Services/Validators/Meta.php @@ -3,8 +3,7 @@ namespace LaravelEnso\Forms\Services\Validators; use Illuminate\Support\Collection; -use LaravelEnso\Enums\Services\Enum; -use LaravelEnso\Enums\Traits\Select; +use LaravelEnso\Enums\Contracts\Select; use LaravelEnso\Forms\Attributes\Meta as Attributes; use LaravelEnso\Forms\Exceptions\Template; use LaravelEnso\Helpers\Services\Obj; @@ -100,25 +99,11 @@ private function selectMetaParameterMissing(): bool || (! $this->meta->has('options') && ! $this->meta->has('source')); } - private function invalidOptions($options) + private function invalidOptions($options): bool { - if (! $options) { - return false; - } - - if (is_string($options) && (class_exists($options) || enum_exists($options))) { - $isLegacyEnum = ! enum_exists($options) - && new $options() instanceof Enum; - - $validEnum = $isLegacyEnum || in_array( - Select::class, - array_keys((new ReflectionEnum($options))->getTraits()) - ); - - return ! $validEnum; - } - - return ! is_array($options) - && ! method_exists($options, 'toArray'); + return ! $options + || enum_exists($options) && ! (new ReflectionEnum($options)) + ->implementsInterface(Select::class) + || ! is_array($options) && ! method_exists($options, 'toArray'); } } diff --git a/tests/unit/Services/BuilderTest.php b/tests/unit/Services/BuilderTest.php index 221dfa0..86c62da 100644 --- a/tests/unit/Services/BuilderTest.php +++ b/tests/unit/Services/BuilderTest.php @@ -6,8 +6,9 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Route; +use LaravelEnso\Enums\Contracts\Select; use LaravelEnso\Enums\Services\Enum; -use LaravelEnso\Enums\Traits\Select; +use LaravelEnso\Enums\Traits\Select as Options; use LaravelEnso\Forms\Services\Builder; use LaravelEnso\Helpers\Services\Obj; use Mockery; @@ -191,9 +192,9 @@ class FormTestModel extends Model public $test_field; } -enum FormTestEnum: int +enum FormTestEnum: int implements Select { - use Select; + use Options; public const Active = 1; public const InActive = 0; From 4e26bffb9b31eef287dd2974768f79c0d9a7b25b Mon Sep 17 00:00:00 2001 From: mishu Date: Wed, 14 Aug 2024 18:01:36 +0300 Subject: [PATCH 6/7] fixes optoins validator --- src/Services/Validators/Meta.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Services/Validators/Meta.php b/src/Services/Validators/Meta.php index 0721bdd..1081299 100644 --- a/src/Services/Validators/Meta.php +++ b/src/Services/Validators/Meta.php @@ -101,9 +101,11 @@ private function selectMetaParameterMissing(): bool private function invalidOptions($options): bool { - return ! $options - || enum_exists($options) && ! (new ReflectionEnum($options)) + return $options + && ( + enum_exists($options) && ! (new ReflectionEnum($options)) ->implementsInterface(Select::class) - || ! is_array($options) && ! method_exists($options, 'toArray'); + || ! class_exists($options) && ! is_array($options) && ! method_exists($options, 'toArray') + ); } } From 8ff25ac1ba2929439f2c62eabcd1676e5dac0612 Mon Sep 17 00:00:00 2001 From: Vlad Chiovianu Date: Mon, 7 Apr 2025 11:00:08 +0300 Subject: [PATCH 7/7] fixes validation when passing array to enum options --- src/Services/Validators/Meta.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Services/Validators/Meta.php b/src/Services/Validators/Meta.php index 1081299..90f1bf4 100644 --- a/src/Services/Validators/Meta.php +++ b/src/Services/Validators/Meta.php @@ -102,10 +102,11 @@ private function selectMetaParameterMissing(): bool private function invalidOptions($options): bool { return $options + && ! is_array($options) && ( enum_exists($options) && ! (new ReflectionEnum($options)) - ->implementsInterface(Select::class) - || ! class_exists($options) && ! is_array($options) && ! method_exists($options, 'toArray') + ->implementsInterface(Select::class) + || ! class_exists($options) && ! method_exists($options, 'toArray') ); } }