diff --git a/core/modules/field_ui/src/Element/FieldUiTable.php b/core/modules/field_ui/src/Element/FieldUiTable.php index 8dee40d7333a8703f7dbbdada0a9ccd2e9253676..f921398d04e07cb087b786b339d6c3a6d1853cb9 100644 --- a/core/modules/field_ui/src/Element/FieldUiTable.php +++ b/core/modules/field_ui/src/Element/FieldUiTable.php @@ -225,7 +225,7 @@ public static function preRenderRegionRows($elements) { */ public static function reduceOrder($array, $a) { $array = !$array ? [] : $array; - if ($a['name']) { + if (!empty($a['name'])) { $array[] = $a['name']; } if (!empty($a['children'])) { diff --git a/core/modules/field_ui/tests/src/Unit/FieldUiTableTest.php b/core/modules/field_ui/tests/src/Unit/FieldUiTableTest.php new file mode 100644 index 0000000000000000000000000000000000000000..ae8d8bff547920eb2433eecfb322d01b90111d14 --- /dev/null +++ b/core/modules/field_ui/tests/src/Unit/FieldUiTableTest.php @@ -0,0 +1,90 @@ +<?php + +namespace Drupal\Tests\field_ui\Unit; + +use Drupal\Tests\UnitTestCase; + +/** + * @coversDefaultClass \Drupal\field_ui\Element\FieldUiTable + * + * @group field_ui + */ +class FieldUiTableTest extends UnitTestCase { + + /** + * @covers ::reduceOrder + * + * @dataProvider providerTestReduceOrder + */ + public function testReduceOrder($array, $expected) { + $this->assertSame($expected, array_reduce($array, ['Drupal\field_ui\Element\FieldUiTable', 'reduceOrder'])); + } + + /** + * Provides test data for testReduceOrder(). + */ + public function providerTestReduceOrder() { + return [ + 'Flat' => [ + 'array' => [ + [ + 'name' => 'foo', + ], + [ + 'name' => 'bar', + ], + [ + 'name' => 'baz', + ], + ], + 'expected' => ['foo', 'bar', 'baz'], + ], + 'Nested' => [ + 'array' => [ + [ + 'name' => 'foo', + 'children' => [ + [ + 'name' => 'bar', + 'weight' => 0, + ], + [ + 'name' => 'baz', + 'weight' => -1, + ], + ], + ], + [ + 'name' => 'biz', + ], + ], + 'expected' => ['foo', 'baz', 'bar', 'biz'], + ], + 'Nested no name key' => [ + 'array' => [ + [ + 'children' => [ + [ + 'name' => 'foo', + 'weight' => -1, + ], + [ + 'name' => 'bar', + 'weight' => 1, + ], + [ + 'name' => 'baz', + 'weight' => 0, + ], + ], + ], + [ + 'name' => 'biz', + ], + ], + 'expected' => ['foo', 'baz', 'bar', 'biz'], + ], + ]; + } + +}