diff options
-rw-r--r-- | includes/theme.inc | 3 | ||||
-rw-r--r-- | modules/simpletest/tests/theme.test | 28 |
2 files changed, 30 insertions, 1 deletions
diff --git a/includes/theme.inc b/includes/theme.inc index a4cb7fef9..9c7b767bb 100644 --- a/includes/theme.inc +++ b/includes/theme.inc @@ -1926,7 +1926,8 @@ function theme_item_list($variables) { $data = $item; } if (count($children) > 0) { - $data .= theme_item_list($children, NULL, $type, $attributes); // Render nested list + // Render nested list. + $data .= theme_item_list(array('items' => $children, 'title' => NULL, 'type' => $type, 'attributes' => $attributes)); } if ($i == 0) { $attributes['class'][] = 'first'; diff --git a/modules/simpletest/tests/theme.test b/modules/simpletest/tests/theme.test index 9b5c5c2d2..ff6250546 100644 --- a/modules/simpletest/tests/theme.test +++ b/modules/simpletest/tests/theme.test @@ -93,3 +93,31 @@ class ThemeTableUnitTest extends DrupalWebTestCase { drupal_static_reset('drupal_add_js'); } } + +/** + * Unit tests for theme_item_list(). + */ +class ThemeItemListUnitTest extends DrupalWebTestCase { + public static function getInfo() { + return array( + 'name' => 'Theme item list', + 'description' => 'Test the theme_item_list() function.', + 'group' => 'Theme', + ); + } + + /** + * Test nested list rendering. + */ + function testNestedList() { + $items = array('a', array('data' => 'b', 'children' => array('c', 'd')), 'e'); + $expected = '<div class="item-list"><ul><li class="first">a</li> +<li>b<div class="item-list"><ul><li class="first">c</li> +<li class="last">d</li> +</ul></div></li> +<li class="last">e</li> +</ul></div>'; + $output = theme('item_list', array('items' => $items, 'type' => 'ul', 'title' => NULL, 'attributes' => array())); + $this->assertIdentical($expected, $output, 'Nested list is rendered correctly.'); + } +} |