[Form] [Doctrine-bridge] Wrong value transformation raises exception #3727
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #3446
Todo: Add a unit test
Steps
Calling
Symfony\Component\Form\Extension\Core\DataTransformer\ChoicesToValuesTransformer::reverseTransform()
with an empty array as a parameter, when theChoicesToValuesTransformer::$choiceList
is aSymfony\Bridge\Doctrine\Form\ChoiceList\EntityChoiceList
.Expected behavior
The method returns an empty array.
Observed behavior
A php warning is raised, thus throwing a 500 error
Notes
I didn't write a test because I didn't know where to add it, as the
ChoicesToValuesTransformer
belongs to the Form component, and theEntityChoiceList
belongs to the Doctrine bridge.Also, all the unit test of
ChoicesToValuesTransformer
are made on aSymfony\Component\Form\Extension\Core\ChoiceList\SimpleChoiceList
, not all the classes implementingSymfony\Component\Form\Extension\Core\ChoiceList\ChoiceList
. I think this could be improved so the tests would be more robust, maybe with a PHPUnit provider.Thanks for your time :)