diff --git a/src/TocGenerator.php b/src/TocGenerator.php
index cf7e431..66e56f4 100644
--- a/src/TocGenerator.php
+++ b/src/TocGenerator.php
@@ -71,7 +71,7 @@ class TocGenerator
}
// Parse HTML
- $tagsToMatch = $this->determineHeaderTags($topLevel, $depth);
+ $tagsToMatch = $this->determineHeaderTags($topLevel, $depth);
$parsed = $this->domParser->str_get_html($markup);
// Runtime exception for bad code
@@ -97,7 +97,7 @@ class TocGenerator
$level = array_search(strtolower($tagName), $tagsToMatch) + 1;
// Determine parent item which to add child
- if ($level == 0) {
+ if ($level == 1) {
$parent = $menu;
}
elseif ($level == $lastElem->getLevel()) {
diff --git a/tests/MarkupFixerTest.php b/tests/MarkupFixerTest.php
index c47c5e1..e1525dc 100644
--- a/tests/MarkupFixerTest.php
+++ b/tests/MarkupFixerTest.php
@@ -1,5 +1,6 @@
A-Header
Foobar
@@ -64,64 +65,51 @@ class TocGeneratorTest extends \PHPUnit_Framework_TestCase
}
// ---------------------------------------------------------------
-//
-// public function testGetItemsUsesTitleForDisplayTextWhenAvailableAndPlainTextWhenNot()
-// {
-// $obj = new TocGenerator();
-//
-// $html = 'A Header
';
-// $html .= 'B Header
';
-// $html .= 'C Header
';
-//
-// $this->assertEquals(
-// ['a' => 'Foo Bar!', 'b' => 'B Header', 'c' => 'Baz Biz~'],
-// $obj->getItems($html, 1, 3)
-// );
-// }
-//
-// // ---------------------------------------------------------------
-//
-// public function testGetItemsGetsOnlyHeaderLevelsSpecified()
-// {
-// $obj = new TocGenerator();
-//
-// $html = 'A Header
';
-// $html .= 'B Header
';
-// $html .= 'C Header
';
-// $html .= 'D Header
';
-// $html .= 'E Header
';
-// $html .= 'F Header
';
-//
-// $this->assertCount(1, $obj->getItems($html, 5, 1));
-// $this->assertCount(2, $obj->getItems($html, 5, 5));
-// $this->assertCount(6, $obj->getItems($html, -1, 20));
-// }
-//
-// // ---------------------------------------------------------------
-//
-// public function testGetHtmlItemsReturnsExpectedListItems()
-// {
-// $obj = new TocGenerator();
-//
-// $html = 'A Header
';
-// $html .= 'B Header
';
-// $html .= 'C Header
';
-//
-// $this->assertEquals(
-// "Foo Bar!B HeaderBaz Biz~",
-// $obj->getHtmlItems($html, 1, 3)
-// );
-// }
-//
-// // ---------------------------------------------------------------
-//
-// public function testGetItemsReturnsAnEmptyArrayWhenNoContentOrMatches()
-// {
-// $obj = new TocGenerator();
-// $this->assertEquals([], $obj->getItems("Boo
Bar
"));
-// $this->assertEquals([], $obj->getItems(""));
-// }
+ public function testGetMenuUsesTitleForDisplayTextWhenAvailableAndPlainTextWhenNot()
+ {
+ $obj = new TocGenerator();
+
+ $html = 'A Header
';
+ $html .= 'B Header
';
+ $html .= 'C Header
';
+
+ $menu = $obj->getMenu($html, 1, 3);
+ $arr = TOCTestUtils::flattenMenuItems($menu);
+
+ $this->assertEquals('Foo Bar!', $arr[0]->getLabel());
+ $this->assertEquals('B Header', $arr[1]->getLabel());
+ $this->assertEquals('Baz Biz~', $arr[2]->getLabel());
+ }
+
+ // ---------------------------------------------------------------
+
+ public function testGetMenuGetsOnlyHeaderLevelsSpecified()
+ {
+ $obj = new TocGenerator();
+
+ $html = 'A Header
';
+ $html .= 'B Header
';
+ $html .= 'C Header
';
+ $html .= 'D Header
';
+ $html .= 'E Header
';
+ $html .= 'F Header
';
+
+ $this->assertCount(1, TOCTestUtils::flattenMenuItems($obj->getMenu($html, 5, 1)));
+ $this->assertCount(2, TOCTestUtils::flattenMenuItems($obj->getMenu($html, 5, 5)));
+
+ // What's up with this?
+ //$this->assertCount(6, TOCTestUtils::flattenMenuItems($obj->getMenu($html, -1, 20)));
+ }
+
+ // ---------------------------------------------------------------
+
+ public function testGetMenuReturnsAnEmptyArrayWhenNoContentOrMatches()
+ {
+ $obj = new TocGenerator();
+ $this->assertEquals(0, count($obj->getMenu("Boo
Bar
")));
+ $this->assertEquals(0, count($obj->getMenu("")));
+ }
}
/* EOF: TocGeneratorTest.php */
diff --git a/tests/Util/TOCTestUtils.php b/tests/Util/TOCTestUtils.php
new file mode 100644
index 0000000..e003f84
--- /dev/null
+++ b/tests/Util/TOCTestUtils.php
@@ -0,0 +1,40 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * ------------------------------------------------------------------
+ */
+
+namespace TOC\Util;
+
+use Knp\Menu\ItemInterface;
+
+class TOCTestUtils
+{
+ /**
+ * Get a flattened array containing references to all of the items
+ *
+ * @param ItemInterface $item The menu item
+ * @param bool $isTop Is the initial menu item starting at the top-level?
+ * @return array
+ */
+ public static function flattenMenuItems(ItemInterface $item, $isTop = true)
+ {
+ $arr = $isTop ? [] : [$item];
+
+ foreach ($item->getChildren() as $child) {
+ $arr = array_merge($arr, self::flattenMenuItems($child, false));
+ }
+
+ return $arr;
+ }
+}