4444use Zenstruck \Foundry \Test \Factories ;
4545use Zenstruck \Foundry \Test \ResetDatabase ;
4646
47- use function Zenstruck \Foundry \factory ;
47+ use function Zenstruck \Foundry \object ;
4848use function Zenstruck \Foundry \Persistence \persist ;
49+ use function Zenstruck \Foundry \Persistence \proxy ;
4950
5051/**
5152 * @author Kevin Bond <[email protected] > @@ -78,7 +79,6 @@ private function executeHydrationTestCase(callable $testFactory, ?int $minPhpVer
7879 $ hydratedComponent2 = clone $ testCase ->component ;
7980
8081 $ liveMetadata = $ testCase ->liveMetadata ;
81-
8282 $ this ->factory ()->mountFromObject (
8383 $ originalComponentWithData ,
8484 $ testCase ->inputProps ,
@@ -401,14 +401,14 @@ public function onEntireEntityUpdated($oldValue)
401401 }];
402402
403403 yield 'Persisted entity: deleting entity between dehydration and hydration sets it to null ' => [function () {
404- $ product = persist (ProductFixtureEntity::class);
404+ $ product = proxy ( persist (ProductFixtureEntity::class) );
405405
406406 return HydrationTest::create (new class {
407407 // test that event the writable path doesn't cause problems
408408 #[LiveProp(writable: ['name ' ])]
409409 public ?ProductFixtureEntity $ product ;
410410 })
411- ->mountWith (['product ' => $ product ])
411+ ->mountWith (['product ' => $ product-> _real () ])
412412 ->beforeHydration (function () use ($ product ) {
413413 $ product ->_delete ();
414414 })
@@ -749,9 +749,9 @@ public function onEntireEntityUpdated($oldValue)
749749 }];
750750
751751 yield 'Array with objects: (de)hydrates correctly ' => [function () {
752- $ prod1 = factory (ProductFixtureEntity::class, ['name ' => 'item1 ' ]);
752+ $ prod1 = persist (ProductFixtureEntity::class, ['name ' => 'item1 ' ]);
753753 $ prod2 = new ProductFixtureEntity ();
754- $ prod3 = factory (ProductFixtureEntity::class, ['name ' => 'item3 ' ]);
754+ $ prod3 = persist (ProductFixtureEntity::class, ['name ' => 'item3 ' ]);
755755
756756 return HydrationTest::create (new DummyObjectWithObjects ())
757757 ->mountWith (['products ' => [$ prod1 , $ prod2 , $ prod3 ]])
@@ -971,10 +971,10 @@ public function mount()
971971 }];
972972
973973 yield 'Array with DTOs: fully writable allows anything to change ' => [function () {
974- $ address1 = factory (Address::class, ['address ' => '17 Arcadia Road ' , 'city ' => 'London ' ]);
975- $ address2 = factory (Address::class, ['address ' => '4 Privet Drive ' , 'city ' => 'Little Whinging ' ]);
976- $ address3 = factory (Address::class, ['address ' => '124 Conch St. ' , 'city ' => 'Bikini Bottom ' ]);
977- $ address4 = factory (Address::class, ['address ' => '32 Windsor Gardens ' , 'city ' => 'London ' ]);
974+ $ address1 = object (Address::class, ['address ' => '17 Arcadia Road ' , 'city ' => 'London ' ]);
975+ $ address2 = object (Address::class, ['address ' => '4 Privet Drive ' , 'city ' => 'Little Whinging ' ]);
976+ $ address3 = object (Address::class, ['address ' => '124 Conch St. ' , 'city ' => 'Bikini Bottom ' ]);
977+ $ address4 = object (Address::class, ['address ' => '32 Windsor Gardens ' , 'city ' => 'London ' ]);
978978
979979 return HydrationTest::create (new class {
980980 /**
@@ -997,19 +997,19 @@ public function mount()
997997 ->userUpdatesProps (['addresses ' => [$ address3 , $ address4 ]])
998998 ->assertObjectAfterHydration (function (object $ object ) {
999999 self ::assertEquals ([
1000- factory (Address::class, ['address ' => '124 Conch St. ' , 'city ' => 'Bikini Bottom ' ]),
1001- factory (Address::class, ['address ' => '32 Windsor Gardens ' , 'city ' => 'London ' ]),
1000+ object (Address::class, ['address ' => '124 Conch St. ' , 'city ' => 'Bikini Bottom ' ]),
1001+ object (Address::class, ['address ' => '32 Windsor Gardens ' , 'city ' => 'London ' ]),
10021002 ], $ object ->addresses );
10031003 });
10041004 }];
10051005
10061006 yield 'Array with DTOs: fully writable allows partial changes ' => [function () {
1007- $ address1 = factory (Address::class, ['address ' => '1600 Pennsylvania Avenue ' , 'city ' => 'Washington DC ' ]);
1008- $ address2 = factory (Address::class, ['address ' => '221 B Baker St ' , 'city ' => 'Birmingham ' ]);
1007+ $ address1 = object (Address::class, ['address ' => '1600 Pennsylvania Avenue ' , 'city ' => 'Washington DC ' ]);
1008+ $ address2 = object (Address::class, ['address ' => '221 B Baker St ' , 'city ' => 'Birmingham ' ]);
10091009
10101010 return HydrationTest::create (new class {
10111011 /**
1012- * @var Address[]
1012+ * @var \Symfony\UX\LiveComponent\Tests\Fixtures\Dto\ Address[]
10131013 */
10141014 #[LiveProp(writable: true , useSerializerForHydration: true )]
10151015 public array $ addresses = [];
@@ -1028,8 +1028,8 @@ public function mount()
10281028 ->userUpdatesProps (['addresses.1.city ' => 'London ' ])
10291029 ->assertObjectAfterHydration (function (object $ object ) {
10301030 self ::assertEquals ([
1031- persist (Address::class, ['address ' => '1600 Pennsylvania Avenue ' , 'city ' => 'Washington DC ' ]),
1032- persist (Address::class, ['address ' => '221 B Baker St ' , 'city ' => 'London ' ]),
1031+ object (Address::class, ['address ' => '1600 Pennsylvania Avenue ' , 'city ' => 'Washington DC ' ]),
1032+ object (Address::class, ['address ' => '221 B Baker St ' , 'city ' => 'London ' ]),
10331033 ], $ object ->addresses );
10341034 });
10351035 }];
@@ -1043,14 +1043,14 @@ public function mount()
10431043 public array $ dtos = [];
10441044 })
10451045 ->mountWith (['dtos ' => [
1046- factory (HoldsArrayOfDtos::class, ['addresses ' => [
1047- factory (Address::class, ['address ' => '742 Evergreen Terrace ' , 'city ' => 'Boston ' ]),
1048- factory (Address::class, ['address ' => 'Apartment 5A, 129 West 81st Street ' , 'city ' => 'New York ' ]),
1049- factory (Address::class, ['address ' => '52 Festive Road ' , 'city ' => 'London ' ]),
1046+ object (HoldsArrayOfDtos::class, ['addresses ' => [
1047+ object (Address::class, ['address ' => '742 Evergreen Terrace ' , 'city ' => 'Boston ' ]),
1048+ object (Address::class, ['address ' => 'Apartment 5A, 129 West 81st Street ' , 'city ' => 'New York ' ]),
1049+ object (Address::class, ['address ' => '52 Festive Road ' , 'city ' => 'London ' ]),
10501050 ]]),
1051- factory (HoldsArrayOfDtos::class, ['addresses ' => [
1052- factory (Address::class, ['address ' => '698 Sycamore Road ' , 'city ' => 'San Pueblo ' ]),
1053- factory (Address::class, ['address ' => 'Madison Square Garden ' , 'city ' => 'Chicago ' ]),
1051+ object (HoldsArrayOfDtos::class, ['addresses ' => [
1052+ object (Address::class, ['address ' => '698 Sycamore Road ' , 'city ' => 'San Pueblo ' ]),
1053+ object (Address::class, ['address ' => 'Madison Square Garden ' , 'city ' => 'Chicago ' ]),
10541054 ]]),
10551055 ]])
10561056 ->assertDehydratesTo (['dtos ' => [
@@ -1071,19 +1071,19 @@ public function mount()
10711071 ->userUpdatesProps ([
10721072 'dtos.0.addresses.0.city ' => 'Springfield ' ,
10731073 'dtos.1.addresses.1.address ' => '1060 West Addison Street ' ,
1074- 'dtos.1.addresses.1 ' => factory (Address::class, ['address ' => '10 Downing Street ' , 'city ' => 'London ' ]),
1074+ 'dtos.1.addresses.1 ' => object (Address::class, ['address ' => '10 Downing Street ' , 'city ' => 'London ' ]),
10751075 ])
10761076 ->assertObjectAfterHydration (function (object $ object ) {
10771077 self ::assertEquals (
10781078 [
1079- persist (HoldsArrayOfDtos::class, ['addresses ' => [
1080- factory (Address::class, ['address ' => '742 Evergreen Terrace ' , 'city ' => 'Springfield ' ]),
1081- factory (Address::class, ['address ' => 'Apartment 5A, 129 West 81st Street ' , 'city ' => 'New York ' ]),
1082- factory (Address::class, ['address ' => '52 Festive Road ' , 'city ' => 'London ' ]),
1079+ object (HoldsArrayOfDtos::class, ['addresses ' => [
1080+ object (Address::class, ['address ' => '742 Evergreen Terrace ' , 'city ' => 'Springfield ' ]),
1081+ object (Address::class, ['address ' => 'Apartment 5A, 129 West 81st Street ' , 'city ' => 'New York ' ]),
1082+ object (Address::class, ['address ' => '52 Festive Road ' , 'city ' => 'London ' ]),
10831083 ]]),
1084- persist (HoldsArrayOfDtos::class, ['addresses ' => [
1085- factory (Address::class, ['address ' => '698 Sycamore Road ' , 'city ' => 'San Pueblo ' ]),
1086- factory (Address::class, ['address ' => '10 Downing Street ' , 'city ' => 'London ' ]),
1084+ object (HoldsArrayOfDtos::class, ['addresses ' => [
1085+ object (Address::class, ['address ' => '698 Sycamore Road ' , 'city ' => 'San Pueblo ' ]),
1086+ object (Address::class, ['address ' => '10 Downing Street ' , 'city ' => 'London ' ]),
10871087 ]]),
10881088 ],
10891089 $ object ->dtos
0 commit comments