From 70e32f08114e08d208c3841a30946379a0715513 Mon Sep 17 00:00:00 2001 From: SadElephant Date: Fri, 15 Sep 2023 19:15:28 +0300 Subject: [PATCH] Added support Enum for Select field --- resources/views/fields/select.blade.php | 16 +++--- tests/App/ExemplarServiceProvider.php | 2 + .../App/Fields/SelectFromEnumFieldScreen.php | 37 +++++++++++++ tests/Database/Factory/RoleFactory.php | 53 ------------------- .../Platform/SelectFromEnumFieldTest.php | 34 ++++++++++++ 5 files changed, 82 insertions(+), 60 deletions(-) create mode 100644 tests/App/Fields/SelectFromEnumFieldScreen.php delete mode 100644 tests/Database/Factory/RoleFactory.php create mode 100644 tests/Feature/Platform/SelectFromEnumFieldTest.php diff --git a/resources/views/fields/select.blade.php b/resources/views/fields/select.blade.php index f1e41c2156..4b3fc0ef88 100644 --- a/resources/views/fields/select.blade.php +++ b/resources/views/fields/select.blade.php @@ -1,20 +1,22 @@ @component($typeForm, get_defined_vars())
+ diff --git a/tests/App/ExemplarServiceProvider.php b/tests/App/ExemplarServiceProvider.php index 84b1017ac8..b0916bfbf8 100644 --- a/tests/App/ExemplarServiceProvider.php +++ b/tests/App/ExemplarServiceProvider.php @@ -8,6 +8,7 @@ use Illuminate\Support\ServiceProvider; use Orchid\Platform\Dashboard; use Orchid\Tests\App\Fields\BaseSelectScreen; +use Orchid\Tests\App\Fields\SelectFromEnumFieldScreen; use Orchid\Tests\App\Screens\AsyncHeaderButtonActionScreen; use Orchid\Tests\App\Screens\ConfirmScreen; use Orchid\Tests\App\Screens\DependentListenerModalScreen; @@ -53,6 +54,7 @@ public function boot(Dashboard $dashboard, Router $router): void // Fields $route->screen('fields/base-select-screen', BaseSelectScreen::class)->name('base-select-screen'); + $route->screen('fields/select-from-enum-field-screen', SelectFromEnumFieldScreen::class)->name('select-from-enum-field-screen'); //issue 2517 $route->screen('item/{parentId}/addChild', ItemAddChildScreen::class)->name('item.addchild'); diff --git a/tests/App/Fields/SelectFromEnumFieldScreen.php b/tests/App/Fields/SelectFromEnumFieldScreen.php new file mode 100644 index 0000000000..b5f982facf --- /dev/null +++ b/tests/App/Fields/SelectFromEnumFieldScreen.php @@ -0,0 +1,37 @@ + Role::find(1), + ]; + } + + /** + * @throws \Illuminate\Contracts\Container\BindingResolutionException + */ + public function fields(): array + { + return [ + Select::make('item.name') + ->options([ + 'admin' => 'Admin', + 'user' => 'User', + ]), + + ]; + } +} diff --git a/tests/Database/Factory/RoleFactory.php b/tests/Database/Factory/RoleFactory.php deleted file mode 100644 index 341352beb7..0000000000 --- a/tests/Database/Factory/RoleFactory.php +++ /dev/null @@ -1,53 +0,0 @@ - [ - 'platform.index' => 1, - 'platform.systems' => 1, - 'platform.systems.roles' => 1, - 'platform.systems.settings' => 1, - 'platform.systems.users' => 1, - 'platform.systems.attachment' => 1, - 'platform.systems.media' => 1, - ], - $role[1] => [ - 'platform.index' => 1, - 'platform.systems' => 1, - 'platform.systems.settings' => 1, - 'platform.systems.comment' => 1, - 'platform.systems.attachment' => 1, - 'platform.systems.media' => 1, - ], - ]; - - $selRole = $this->faker->randomElement($role); - - return [ - 'name' => $this->faker->lexify($selRole.'_???'), - 'slug' => $this->faker->unique()->jobTitle, - 'permissions' => $roles[$selRole], - ]; - } -} diff --git a/tests/Feature/Platform/SelectFromEnumFieldTest.php b/tests/Feature/Platform/SelectFromEnumFieldTest.php new file mode 100644 index 0000000000..8bb132ea88 --- /dev/null +++ b/tests/Feature/Platform/SelectFromEnumFieldTest.php @@ -0,0 +1,34 @@ +create([ + 'name' => RoleNames::Admin->value, + ]); + $this->role = RoleWithEnum::find(1); + } + + public function testBase(): void + { + $this + ->actingAs($this->createAdminUser()) + ->get(route('test.select-from-enum-field-screen')) + ->assertSuccessful() + ->assertSee(RoleNames::Admin->name); + } +}