From 583d8b244011798416bf6fafd079a2acf20983a3 Mon Sep 17 00:00:00 2001 From: Benjamin Nussbaum Date: Fri, 10 Oct 2025 16:35:10 +0200 Subject: [PATCH] feat: add support for configuration field `multi_string ` --- .../views/livewire/plugins/recipe.blade.php | 9 +++ .../PluginRequiredConfigurationTest.php | 76 +++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/resources/views/livewire/plugins/recipe.blade.php b/resources/views/livewire/plugins/recipe.blade.php index a579427..5bbf27e 100644 --- a/resources/views/livewire/plugins/recipe.blade.php +++ b/resources/views/livewire/plugins/recipe.blade.php @@ -839,6 +839,15 @@ HTML; @endif + @elseif($field['field_type'] === 'multi_string') + @else Field type "{{ $field['field_type'] }}" not yet supported @endif diff --git a/tests/Feature/PluginRequiredConfigurationTest.php b/tests/Feature/PluginRequiredConfigurationTest.php index 83be449..51e1b76 100644 --- a/tests/Feature/PluginRequiredConfigurationTest.php +++ b/tests/Feature/PluginRequiredConfigurationTest.php @@ -268,3 +268,79 @@ test('hasMissingRequiredConfigurationFields returns false when required xhrSelec expect($plugin->hasMissingRequiredConfigurationFields())->toBeFalse(); }); + +test('hasMissingRequiredConfigurationFields returns true when required multi_string field is missing', function (): void { + $user = User::factory()->create(); + + $configurationTemplate = [ + 'custom_fields' => [ + [ + 'keyname' => 'tags', + 'field_type' => 'multi_string', + 'name' => 'Tags', + 'description' => 'Enter tags separated by commas', + // Not marked as optional, so it's required + ], + ], + ]; + + $plugin = Plugin::factory()->create([ + 'user_id' => $user->id, + 'configuration_template' => $configurationTemplate, + 'configuration' => [], // Empty configuration + ]); + + expect($plugin->hasMissingRequiredConfigurationFields())->toBeTrue(); +}); + +test('hasMissingRequiredConfigurationFields returns false when required multi_string field is set', function (): void { + $user = User::factory()->create(); + + $configurationTemplate = [ + 'custom_fields' => [ + [ + 'keyname' => 'tags', + 'field_type' => 'multi_string', + 'name' => 'Tags', + 'description' => 'Enter tags separated by commas', + // Not marked as optional, so it's required + ], + ], + ]; + + $plugin = Plugin::factory()->create([ + 'user_id' => $user->id, + 'configuration_template' => $configurationTemplate, + 'configuration' => [ + 'tags' => 'tag1, tag2, tag3', // Required field is set with comma-separated values + ], + ]); + + expect($plugin->hasMissingRequiredConfigurationFields())->toBeFalse(); +}); + +test('hasMissingRequiredConfigurationFields returns true when required multi_string field is empty string', function (): void { + $user = User::factory()->create(); + + $configurationTemplate = [ + 'custom_fields' => [ + [ + 'keyname' => 'tags', + 'field_type' => 'multi_string', + 'name' => 'Tags', + 'description' => 'Enter tags separated by commas', + // Not marked as optional, so it's required + ], + ], + ]; + + $plugin = Plugin::factory()->create([ + 'user_id' => $user->id, + 'configuration_template' => $configurationTemplate, + 'configuration' => [ + 'tags' => '', // Empty string + ], + ]); + + expect($plugin->hasMissingRequiredConfigurationFields())->toBeTrue(); +});