From cd3f5327a01f16ba2d267350b20769278d59d7ee Mon Sep 17 00:00:00 2001 From: Dan Harrin Date: Tue, 27 May 2025 12:22:10 +0100 Subject: [PATCH] Update StateTest.php --- tests/src/Forms/StateTest.php | 74 +++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 3 deletions(-) diff --git a/tests/src/Forms/StateTest.php b/tests/src/Forms/StateTest.php index 70adacd4bc..35b1003085 100644 --- a/tests/src/Forms/StateTest.php +++ b/tests/src/Forms/StateTest.php @@ -486,7 +486,7 @@ test('hidden components are excluded from state dehydration except if they are m ->fill(); expect($container) - ->dehydrateState()->not()->toBe([]); + ->dehydrateState()->data->not()->toBe([]); $container = ComponentContainer::make(Livewire::make()) ->statePath('data') @@ -505,7 +505,7 @@ test('hidden components are excluded from state dehydration except if they are m ->fill(); expect($container) - ->dehydrateState()->not()->toBe([]); + ->dehydrateState()->data->not()->toBe([]); }); test('hidden components are excluded from state dehydration even if their parent component has a state path', function () { @@ -531,6 +531,74 @@ test('hidden components are excluded from state dehydration even if their parent ]); }); +test('components are not excluded from state dehydration if there is another dehydrated field with the same name', function () { + $container = ComponentContainer::make(Livewire::make()) + ->statePath('data') + ->components([ + (new Component) + ->statePath($statePath = Str::random()) + ->default(Str::random()) + ->dehydrated(false), + (new Component) + ->statePath($statePath) + ->default(Str::random()), + ]) + ->fill(); + + expect($container) + ->dehydrateState()->data->not()->toBe([]); + + $container = ComponentContainer::make(Livewire::make()) + ->statePath('data') + ->components([ + (new Component) + ->statePath($statePath = Str::random()) + ->default(Str::random()), + (new Component) + ->statePath($statePath) + ->default(Str::random()) + ->dehydrated(false), + ]) + ->fill(); + + expect($container) + ->dehydrateState()->data->not()->toBe([]); +}); + +test('hidden components are not excluded from state dehydration if there is another visible field with the same name', function () { + $container = ComponentContainer::make(Livewire::make()) + ->statePath('data') + ->components([ + (new Component) + ->statePath($statePath = Str::random()) + ->default(Str::random()) + ->hidden(), + (new Component) + ->statePath($statePath) + ->default(Str::random()), + ]) + ->fill(); + + expect($container) + ->dehydrateState()->data->not()->toBe([]); + + $container = ComponentContainer::make(Livewire::make()) + ->statePath('data') + ->components([ + (new Component) + ->statePath($statePath = Str::random()) + ->default(Str::random()), + (new Component) + ->statePath($statePath) + ->default(Str::random()) + ->hidden(), + ]) + ->fill(); + + expect($container) + ->dehydrateState()->data->not()->toBe([]); +}); + test('disabled components are excluded from state dehydration', function () { $container = ComponentContainer::make(Livewire::make()) ->statePath('data') @@ -577,7 +645,7 @@ test('disabled components are excluded from state dehydration except if they are ->fill(); expect($container) - ->dehydrateState()->not()->toBe([]); + ->dehydrateState()->data->not()->toBe([]); }); test('disabled components are excluded from state dehydration if their parent component is disabled and not marked as dehydrated', function () {