44
44
use Zenstruck \Foundry \Test \Factories ;
45
45
use Zenstruck \Foundry \Test \ResetDatabase ;
46
46
47
- use function Zenstruck \Foundry \factory ;
47
+ use function Zenstruck \Foundry \object ;
48
48
use function Zenstruck \Foundry \Persistence \persist ;
49
+ use function Zenstruck \Foundry \Persistence \proxy ;
49
50
50
51
/**
51
52
* @author Kevin Bond <kevinbond@gmail.com>
@@ -78,7 +79,6 @@ private function executeHydrationTestCase(callable $testFactory, ?int $minPhpVer
78
79
$ hydratedComponent2 = clone $ testCase ->component ;
79
80
80
81
$ liveMetadata = $ testCase ->liveMetadata ;
81
-
82
82
$ this ->factory ()->mountFromObject (
83
83
$ originalComponentWithData ,
84
84
$ testCase ->inputProps ,
@@ -401,14 +401,14 @@ public function onEntireEntityUpdated($oldValue)
401
401
}];
402
402
403
403
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) );
405
405
406
406
return HydrationTest::create (new class {
407
407
// test that event the writable path doesn't cause problems
408
408
#[LiveProp(writable: ['name ' ])]
409
409
public ?ProductFixtureEntity $ product ;
410
410
})
411
- ->mountWith (['product ' => $ product ])
411
+ ->mountWith (['product ' => $ product-> _real () ])
412
412
->beforeHydration (function () use ($ product ) {
413
413
$ product ->_delete ();
414
414
})
@@ -749,9 +749,9 @@ public function onEntireEntityUpdated($oldValue)
749
749
}];
750
750
751
751
yield 'Array with objects: (de)hydrates correctly ' => [function () {
752
- $ prod1 = factory (ProductFixtureEntity::class, ['name ' => 'item1 ' ]);
752
+ $ prod1 = persist (ProductFixtureEntity::class, ['name ' => 'item1 ' ]);
753
753
$ prod2 = new ProductFixtureEntity ();
754
- $ prod3 = factory (ProductFixtureEntity::class, ['name ' => 'item3 ' ]);
754
+ $ prod3 = persist (ProductFixtureEntity::class, ['name ' => 'item3 ' ]);
755
755
756
756
return HydrationTest::create (new DummyObjectWithObjects ())
757
757
->mountWith (['products ' => [$ prod1 , $ prod2 , $ prod3 ]])
@@ -971,10 +971,10 @@ public function mount()
971
971
}];
972
972
973
973
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 ' ]);
978
978
979
979
return HydrationTest::create (new class {
980
980
/**
@@ -997,19 +997,19 @@ public function mount()
997
997
->userUpdatesProps (['addresses ' => [$ address3 , $ address4 ]])
998
998
->assertObjectAfterHydration (function (object $ object ) {
999
999
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 ' ]),
1002
1002
], $ object ->addresses );
1003
1003
});
1004
1004
}];
1005
1005
1006
1006
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 ' ]);
1009
1009
1010
1010
return HydrationTest::create (new class {
1011
1011
/**
1012
- * @var Address[]
1012
+ * @var \Symfony\UX\LiveComponent\Tests\Fixtures\Dto\ Address[]
1013
1013
*/
1014
1014
#[LiveProp(writable: true , useSerializerForHydration: true )]
1015
1015
public array $ addresses = [];
@@ -1028,8 +1028,8 @@ public function mount()
1028
1028
->userUpdatesProps (['addresses.1.city ' => 'London ' ])
1029
1029
->assertObjectAfterHydration (function (object $ object ) {
1030
1030
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 ' ]),
1033
1033
], $ object ->addresses );
1034
1034
});
1035
1035
}];
@@ -1043,14 +1043,14 @@ public function mount()
1043
1043
public array $ dtos = [];
1044
1044
})
1045
1045
->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 ' ]),
1050
1050
]]),
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 ' ]),
1054
1054
]]),
1055
1055
]])
1056
1056
->assertDehydratesTo (['dtos ' => [
@@ -1071,19 +1071,19 @@ public function mount()
1071
1071
->userUpdatesProps ([
1072
1072
'dtos.0.addresses.0.city ' => 'Springfield ' ,
1073
1073
'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 ' ]),
1075
1075
])
1076
1076
->assertObjectAfterHydration (function (object $ object ) {
1077
1077
self ::assertEquals (
1078
1078
[
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 ' ]),
1083
1083
]]),
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 ' ]),
1087
1087
]]),
1088
1088
],
1089
1089
$ object ->dtos
0 commit comments