From d8da66761eb7f61b2de347544daf1004ce4a7895 Mon Sep 17 00:00:00 2001 From: LarsDW223 Date: Sun, 8 May 2016 11:59:49 +0200 Subject: [PATCH] Added test code (incomplete) and travis-ci config file. --- .travis.yml | 13 + _test/filelist.test.php | 407 +++++++++++++++++++++ _test/filelistdata/example.txt | 1 + _test/filelistdata/exampledir/example2.txt | 1 + _test/filelistdata/exampleimage.png | Bin 0 -> 1134 bytes 5 files changed, 422 insertions(+) create mode 100644 .travis.yml create mode 100644 _test/filelist.test.php create mode 100644 _test/filelistdata/example.txt create mode 100644 _test/filelistdata/exampledir/example2.txt create mode 100644 _test/filelistdata/exampleimage.png diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..5b9eca8 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,13 @@ +language: php +php: + - "7.0" + - "5.6" + - "5.5" + - "5.4" + - "5.3" +env: + - DOKUWIKI=master + - DOKUWIKI=stable +before_install: wget https://raw.github.com/splitbrain/dokuwiki-travis/master/travis.sh && rm .gitignore +install: sh travis.sh +script: cd _test && phpunit --stderr --group plugin_filelist diff --git a/_test/filelist.test.php b/_test/filelist.test.php new file mode 100644 index 0000000..3d6bea9 --- /dev/null +++ b/_test/filelist.test.php @@ -0,0 +1,407 @@ +pluginsEnabled[] = 'filelist'; + parent::setUp(); + + // Setup config so that access to the TMP directory will be allowed + $conf ['plugin']['filelist']['allowed_absolute_paths'] = TMP_DIR.'/filelistdata/'; + $conf ['plugin']['filelist']['web_paths'] = 'http://localhost/'; + } + + public static function setUpBeforeClass(){ + parent::setUpBeforeClass(); + + // copy test files to test directory + TestUtils::rcopy(TMP_DIR, dirname(__FILE__) . '/filelistdata'); + } + + /** + * This function checks that all files are listed in not recursive mode. + */ + public function test_not_recursive () { + global $conf; + + // Render filelist + $instructions = p_get_instructions('{{filelist>'.TMP_DIR.'/filelistdata/*&style=list&direct=1}}'); + $xhtml = p_render('xhtml', $instructions, $info); + + // We should find: + // - example.txt + // - exampleimage.png + $result = strpos ($xhtml, 'example.txt'); + $this->assertFalse($result===false, '"example.txt" not listed'); + $result = strpos ($xhtml, 'exampleimage.png'); + $this->assertFalse($result===false, '"exampleimage.png" not listed'); + } + + /** + * This function checks that all files are listed in recursive mode. + */ + public function test_recursive () { + global $conf; + + // Render filelist + $instructions = p_get_instructions('{{filelist>'.TMP_DIR.'/filelistdata/*&style=list&direct=1&recursive=1}}'); + $xhtml = p_render('xhtml', $instructions, $info); + + // We should find: + // - exampledir + // - example2.txt + // - example.txt + // - exampleimage.png + $result = strpos ($xhtml, 'exampledir'); + $this->assertFalse($result===false, '"exampledir" not listed'); + $result = strpos ($xhtml, 'example2.txt'); + $this->assertFalse($result===false, '"example2.txt" not listed'); + $result = strpos ($xhtml, 'example.txt'); + $this->assertFalse($result===false, '"example.txt" not listed'); + $result = strpos ($xhtml, 'exampleimage.png'); + $this->assertFalse($result===false, '"exampleimage.png" not listed'); + } + + /** + * This function checks that the unordered list mode + * generates the expected XHTML structure. + */ + public function test_list () { + global $conf; + + // Render filelist + $instructions = p_get_instructions('{{filelist>'.TMP_DIR.'/filelistdata/*&style=list&direct=1&recursive=1}}'); + $xhtml = p_render('xhtml', $instructions, $info); + + $doc = new DOMDocument(); + $doc->loadHTML($xhtml); + + $first = $doc->documentElement; + $this->assertEquals('html', $first->tagName); + + $children = $first->childNodes; + $this->assertTrue($children->length==1); + $this->assertEquals('body', $children[0]->nodeName); + + // We should have 'div' first + $children = $children[0]->childNodes; + $this->assertTrue($children->length==1); + $this->assertEquals('div', $children[0]->nodeName); + + // It should have the childs text, 'ol' + $children = $children[0]->childNodes; + $this->assertTrue($children->length==2); + $this->assertEquals('#text', $children[0]->nodeName); + $this->assertEquals('ul', $children[1]->nodeName); + + // The 'ol' element should have 3 'li' childs + $children = $children[1]->childNodes; + $this->assertTrue($children->length==6); + $this->assertEquals('li', $children[0]->nodeName); + $this->assertEquals('#text', $children[1]->nodeName); + $this->assertEquals('li', $children[2]->nodeName); + $this->assertEquals('#text', $children[3]->nodeName); + $this->assertEquals('li', $children[4]->nodeName); + $this->assertEquals('#text', $children[5]->nodeName); + + // First child of first 'li' should be the link to 'example.txt' + $node = $children[0]; + $node_childs = $node->childNodes; + $this->assertEquals('level1', $node->getAttribute('class')); + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('example.txt', $node_childs[0]->nodeValue); + + // First child of second 'li' is directory 'exampledir' and another 'ol' + $node = $children[2]; + $node_childs = $node->childNodes; + $this->assertTrue($node_childs->length==2); + $this->assertEquals('#text', $node_childs[0]->nodeName); + $this->assertEquals('exampledir', $node_childs[0]->nodeValue); + $this->assertEquals('ul', $node_childs[1]->nodeName); + + // That 'ol' should have one 'li' with 'class=level2' + $node_childs = $node_childs[1]->childNodes; + $this->assertTrue($node_childs->length==2); + $this->assertEquals('li', $node_childs[0]->nodeName); + $this->assertEquals('level2', $node_childs[0]->getAttribute('class')); + $this->assertEquals('#text', $node_childs[1]->nodeName); + + // The link of that 'li' should reference 'example2.txt' + $node_childs = $node_childs[0]->childNodes; + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('example2.txt', $node_childs[0]->nodeValue); + + // First child of third 'li' should be the link to 'exampleimage.png' + $node = $children[4]; + $node_childs = $node->childNodes; + $this->assertEquals('level1', $node->getAttribute('class')); + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('exampleimage.png', $node_childs[0]->nodeValue); + } + + /** + * This function checks that the ordered list mode + * generates the expected XHTML structure. + */ + public function test_olist () { + global $conf; + + // Render filelist + $instructions = p_get_instructions('{{filelist>'.TMP_DIR.'/filelistdata/*&style=olist&direct=1&recursive=1}}'); + $xhtml = p_render('xhtml', $instructions, $info); + + $doc = new DOMDocument(); + $doc->loadHTML($xhtml); + + $first = $doc->documentElement; + $this->assertEquals('html', $first->tagName); + + $children = $first->childNodes; + $this->assertTrue($children->length==1); + $this->assertEquals('body', $children[0]->nodeName); + + // We should have 'div' first + $children = $children[0]->childNodes; + $this->assertTrue($children->length==1); + $this->assertEquals('div', $children[0]->nodeName); + + // It should have the childs text, 'ol' + $children = $children[0]->childNodes; + $this->assertTrue($children->length==2); + $this->assertEquals('#text', $children[0]->nodeName); + $this->assertEquals('ol', $children[1]->nodeName); + + // The 'ol' element should have 3 'li' childs + $children = $children[1]->childNodes; + $this->assertTrue($children->length==6); + $this->assertEquals('li', $children[0]->nodeName); + $this->assertEquals('#text', $children[1]->nodeName); + $this->assertEquals('li', $children[2]->nodeName); + $this->assertEquals('#text', $children[3]->nodeName); + $this->assertEquals('li', $children[4]->nodeName); + $this->assertEquals('#text', $children[5]->nodeName); + + // First child of first 'li' should be the link to 'example.txt' + $node = $children[0]; + $node_childs = $node->childNodes; + $this->assertEquals('level1', $node->getAttribute('class')); + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('example.txt', $node_childs[0]->nodeValue); + + // First child of second 'li' is directory 'exampledir' and another 'ol' + $node = $children[2]; + $node_childs = $node->childNodes; + $this->assertTrue($node_childs->length==2); + $this->assertEquals('#text', $node_childs[0]->nodeName); + $this->assertEquals('exampledir', $node_childs[0]->nodeValue); + $this->assertEquals('ol', $node_childs[1]->nodeName); + + // That 'ol' should have one 'li' with 'class=level2' + $node_childs = $node_childs[1]->childNodes; + $this->assertTrue($node_childs->length==2); + $this->assertEquals('li', $node_childs[0]->nodeName); + $this->assertEquals('level2', $node_childs[0]->getAttribute('class')); + $this->assertEquals('#text', $node_childs[1]->nodeName); + + // The link of that 'li' should reference 'example2.txt' + $node_childs = $node_childs[0]->childNodes; + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('example2.txt', $node_childs[0]->nodeValue); + + // First child of third 'li' should be the link to 'exampleimage.png' + $node = $children[4]; + $node_childs = $node->childNodes; + $this->assertEquals('level1', $node->getAttribute('class')); + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('exampleimage.png', $node_childs[0]->nodeValue); + } + + /** + * This function checks that the page mode + * generates the expected XHTML structure. + */ + public function test_page () { + global $conf; + + // Render filelist + $instructions = p_get_instructions('{{filelist>'.TMP_DIR.'/filelistdata/*&style=page&direct=1&recursive=1}}'); + $xhtml = p_render('xhtml', $instructions, $info); + + $doc = new DOMDocument(); + $doc->loadHTML($xhtml); + + $first = $doc->documentElement; + $this->assertEquals('html', $first->tagName); + + $children = $first->childNodes; + $this->assertTrue($children->length==1); + $this->assertEquals('body', $children[0]->nodeName); + + // We should have a 'ul', 'h1', '#test' and 'div' node + $children = $children[0]->childNodes; + $this->assertTrue($children->length==4); + $this->assertEquals('ul', $children[0]->nodeName); + $this->assertEquals('h1', $children[1]->nodeName); + $this->assertEquals('#text', $children[2]->nodeName); + $this->assertEquals('div', $children[3]->nodeName); + + // 'ul' should have the childs 'li', text, 'li', text + //$children = $children[0]->childNodes; + $node_childs = $children[0]->childNodes; + $this->assertTrue($children->length==4); + $this->assertEquals('li', $node_childs[0]->nodeName); + $this->assertEquals('#text', $node_childs[1]->nodeName); + $this->assertEquals('li', $node_childs[2]->nodeName); + $this->assertEquals('#text', $node_childs[3]->nodeName); + + // Check first 'li' contents + $node = $node_childs[0]; + $node_childs = $node->childNodes; + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('example.txt', $node_childs[0]->nodeValue); + + // Check second 'li' contents + $node = $children[0]->childNodes; + $node_childs = $node[2]->childNodes; + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('exampleimage.png', $node_childs[0]->nodeValue); + + // Check 'h1' contents + $node = $children[1]; + $this->assertEquals('h1', $node->nodeName); + $this->assertEquals('exampledir', $node->nodeValue); + + // Check 'div' contents + $node = $children[3]; + $this->assertEquals('div', $node->nodeName); + $this->assertEquals('level1', $node->getAttribute('class')); + + // Check 'div' childs + $node_childs = $node->childNodes; + $this->assertTrue($node_childs->length==2); + $this->assertEquals('#text', $node_childs[0]->nodeName); + $this->assertEquals('ul', $node_childs[1]->nodeName); + + // Check 'ul' childs, we should have 'li' + $node_childs = $node_childs[1]->childNodes; + $this->assertTrue($node_childs->length==2); + $this->assertEquals('li', $node_childs[0]->nodeName); + $this->assertEquals('#text', $node_childs[1]->nodeName); + + // The 'li' should have a 'a' + $node_childs = $node_childs[0]->childNodes; + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('example2.txt', $node_childs[0]->nodeValue); + } + + /** + * This function checks that the table mode + * generates the expected XHTML structure. + */ + public function test_table () { + global $conf; + + // Render filelist + $instructions = p_get_instructions('{{filelist>'.TMP_DIR.'/filelistdata/*&style=table&direct=1&recursive=1}}'); + $xhtml = p_render('xhtml', $instructions, $info); + + $doc = new DOMDocument(); + $doc->loadHTML($xhtml); + + $first = $doc->documentElement; + $this->assertEquals('html', $first->tagName); + + $children = $first->childNodes; + $this->assertTrue($children->length==1); + $this->assertEquals('body', $children[0]->nodeName); + + // We should have a 'div' node + $children = $children[0]->childNodes; + $this->assertTrue($children->length==1); + $this->assertEquals('div', $children[0]->nodeName); + $this->assertEquals('filelist-plugin', $children[0]->getAttribute('class')); + + // Check 'div' childs + $children = $children[0]->childNodes; + $this->assertTrue($children->length==3); + $this->assertEquals('#text', $children[0]->nodeName); + $this->assertEquals('div', $children[1]->nodeName); + $this->assertEquals('table sectionedit1', $children[1]->getAttribute('class')); + $this->assertEquals('#text', $children[2]->nodeName); + + // Check inner 'div' content + $children = $children[1]->childNodes; + $this->assertTrue($children->length==1); + $this->assertEquals('table', $children[0]->nodeName); + + // Check inner 'table' content + $children = $children[0]->childNodes; + $this->assertTrue($children->length==3); + $this->assertEquals('tr', $children[0]->nodeName); + $this->assertEquals('tr', $children[1]->nodeName); + $this->assertEquals('tr', $children[2]->nodeName); + + // Check table row 1 + $node_childs = $children[0]->childNodes; + $this->assertTrue($node_childs->length==2); + $this->assertEquals('td', $node_childs[0]->nodeName); + $this->assertEquals('#text', $node_childs[1]->nodeName); + + // Check table row 1/cell 1 content + $node_childs = $node_childs[0]->childNodes; + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('example.txt', $node_childs[0]->nodeValue); + + // Check table row 2 + $node_childs = $children[1]->childNodes; + $this->assertTrue($node_childs->length==2); + $this->assertEquals('td', $node_childs[0]->nodeName); + $this->assertEquals('#text', $node_childs[1]->nodeName); + + // Check table row 2/cell 1 content + $node_childs = $node_childs[0]->childNodes; + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('exampledir/example2.txt', $node_childs[0]->nodeValue); + + // Check table row 3 + $node_childs = $children[2]->childNodes; + $this->assertTrue($node_childs->length==2); + $this->assertEquals('td', $node_childs[0]->nodeName); + $this->assertEquals('#text', $node_childs[1]->nodeName); + + // Check table row 3/cell 1 content + $node_childs = $node_childs[0]->childNodes; + $this->assertTrue($node_childs->length==1); + $this->assertEquals('a', $node_childs[0]->nodeName); + $this->assertEquals('exampleimage.png', $node_childs[0]->nodeValue); + + /*print_r ($node_childs->children[1]); + foreach ($node_childs as $node) { + print ("\nTEST:".$node->nodeName." : ".$node->nodeValue."\n"); + }*/ + } +} diff --git a/_test/filelistdata/example.txt b/_test/filelistdata/example.txt new file mode 100644 index 0000000..472a40b --- /dev/null +++ b/_test/filelistdata/example.txt @@ -0,0 +1 @@ +Just a stupid example text file. diff --git a/_test/filelistdata/exampledir/example2.txt b/_test/filelistdata/exampledir/example2.txt new file mode 100644 index 0000000..1a1b7e4 --- /dev/null +++ b/_test/filelistdata/exampledir/example2.txt @@ -0,0 +1 @@ +Just another stupid example text file. diff --git a/_test/filelistdata/exampleimage.png b/_test/filelistdata/exampleimage.png new file mode 100644 index 0000000000000000000000000000000000000000..3aeda0861ea194f4294b68fc0cc29b99768e87be GIT binary patch literal 1134 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&4mO}jWo=(6kYXuz@(kesf*OvL4j@<6)5S5Q zV$RzuhQ7^=3~U$Iv#`d_ywE6Uld#53YiYLbl*SE?m)@RNeXqIWrQdBiW{!%x+qT!f z+ta@|n&Dr`{nG8Rb#0~hj^F!US|WU4f8OplPhW5}q)UoTNQ`i3OJtO6V@;75<&1{G zXgU}odEwaWZFkFUcQHSR-`{VQTP-u2>BF4-ZbLrx+<*KHzygH9)78&qol`;+04~!| A(EtDd literal 0 HcmV?d00001