silverstripe / silverstripe-elemental

Create pages in Silverstripe CMS using content blocks
http://dna.co.nz
BSD 3-Clause "New" or "Revised" License
109 stars 115 forks source link

FIX Provide instance of CompositeField rather than class string #1188

Closed emteknetnz closed 3 months ago

emteknetnz commented 3 months ago

Issue https://github.com/silverstripe/silverstripe-framework/issues/11198

Fixes unit test failing in kitchen-sink ci run on recipe-content-blocks

1) DNADesign\Elemental\Tests\Forms\ElementalAreaFieldTest::testFieldReturnsCompositeFieldOnReadonlyTransformation
TypeError: get_class(): Argument #1 ($object) must be of type object, string given

/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/silverstripe/framework/src/Forms/FieldList.php:49
/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/silverstripe/framework/src/Forms/CompositeField.php:63
/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/silverstripe/framework/src/Core/Injector/InjectionCreator.php:35
/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/silverstripe/framework/src/Core/Injector/Injector.php:631
/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/silverstripe/framework/src/Core/Injector/Injector.php:1027
/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/silverstripe/framework/src/Core/Injector/Injector.php:979
/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/silverstripe/framework/src/Core/Injector/Injector.php:1152
/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/silverstripe/framework/src/Core/Injector/Injectable.php:30
/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/silverstripe/framework/src/Forms/FormField.php:1365
/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/dnadesign/silverstripe-elemental/src/Forms/ElementalAreaField.php:187
/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/dnadesign/silverstripe-elemental/tests/Forms/ElementalAreaFieldTest.php:41
/home/runner/work/recipe-kitchen-sink/recipe-kitchen-sink/vendor/bin/phpunit:122
GuySartorelli commented 3 months ago

castedCopy() should handle this - it accepts a classname and uses it to create an instance of that class. See https://github.com/silverstripe/silverstripe-framework/blob/c6aee6c5c7dd216db1a3c181d44511901c6c52bc/src/Forms/FormField.php#L1360-L1366

emteknetnz commented 3 months ago

Will fix in https://github.com/silverstripe/silverstripe-framework/pull/11235 instead