Skip to content

Commit

Permalink
Add test cases for the recently added namespace include features
Browse files Browse the repository at this point in the history
This tests:
- exclusion of hidden pages
- ordering by page ID and custom metadata
- the various options of the depth parameter
  • Loading branch information
michitux committed Nov 28, 2012
1 parent df062bd commit d0eed7e
Showing 1 changed file with 140 additions and 0 deletions.
140 changes: 140 additions & 0 deletions _test/namespace_includes.test.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
<?php

if (!defined('DOKU_INC')) die();

/**
* Test namespace includes
*/
class plugin_include_namespaces_includes_test extends DokuWikiTest {
/**
* @var helper_plugin_include $helper
*/
private $helper;

/**
* Setup - enable and load the include plugin and create the test pages
*/
public function setup() {
$this->pluginsEnabled[] = 'include';
parent::setup(); // this enables the include plugin
$this->helper = plugin_load('helper', 'include');

global $conf;
$conf['hidepages'] = 'inclhidden:hidden';

// for testing hidden pages
saveWikiText('inclhidden:hidden', 'Hidden page', 'Created hidden page');
saveWikiText('inclhidden:visible', 'Visible page', 'Created visible page');

// pages on different levels
saveWikiText('incltest:level1', 'Page on level 1', 'Created page on level 1');
saveWikiText('incltest:ns:level2', 'Page on level 2', 'Created page on level 2');
saveWikiText('incltest:ns:ns:level3', 'Page on level 3', 'Created page on level 3');

// for page ordering
saveWikiText('inclorder:page1', 'Page 1', 'Created page 1');
saveWikiText('inclorder:page2', 'Page 2', 'Created page 2');
saveWikiText('inclorder:page3', '{{include_n>1}} Page 3/1', 'created page 3/1');
saveWikiText('inclorder:page4', '{{include_n>0}} Page 4/0', 'created page 4/0');
}

/**
* Test hiding of hidden pages in namespace includes
*/
public function test_hidden() {
$flags = $this->helper->get_flags(array());
$pages = $this->helper->_get_included_pages('namespace', 'inclhidden:', '', '', $flags);
$this->assertEquals(array(
array('id' => 'inclhidden:visible', 'exists' => true, 'parent_id' => ''),
), $pages);
}

/**
* Test include depth limit
*/
public function test_depth() {
$flags = $this->helper->get_flags(array());
$pages = $this->helper->_get_included_pages('namespace', 'incltest:', '', '', $flags);
$this->assertEquals(array(
array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''),
), $pages);
$flags = $this->helper->get_flags(array('depth=2'));
$pages = $this->helper->_get_included_pages('namespace', 'incltest:', '', '', $flags);
$this->assertEquals(array(
array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''),
array('id' => 'incltest:ns:level2', 'exists' => true, 'parent_id' => ''),
), $pages);
$flags = $this->helper->get_flags(array('depth=2'));
$pages = $this->helper->_get_included_pages('namespace', 'incltest:ns', '', '', $flags);
$this->assertEquals(array(
array('id' => 'incltest:ns:level2', 'exists' => true, 'parent_id' => ''),
array('id' => 'incltest:ns:ns:level3', 'exists' => true, 'parent_id' => ''),
), $pages);
$flags = $this->helper->get_flags(array('depth=0'));
$pages = $this->helper->_get_included_pages('namespace', 'incltest:', '', '', $flags);
$this->assertEquals(array(
array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''),
array('id' => 'incltest:ns:level2', 'exists' => true, 'parent_id' => ''),
array('id' => 'incltest:ns:ns:level3', 'exists' => true, 'parent_id' => ''),
), $pages);

// test include of the root namespace
$flags = $this->helper->get_flags(array());
$pages = $this->helper->_get_included_pages('namespace', ':', '', '', $flags);
$this->assertEquals(array(), $pages);
$flags = $this->helper->get_flags(array('depth=2'));
$pages = $this->helper->_get_included_pages('namespace', ':', '', '', $flags);
$this->assertEquals(array(
array('id' => 'inclhidden:visible', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''),
array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''),
array('id' => 'wiki:dokuwiki', 'exists' => true, 'parent_id' => ''),
array('id' => 'wiki:syntax', 'exists' => true, 'parent_id' => ''),
), $pages);
}

/**
* Test ordering of namespace includes
*/
public function test_order() {

$flags = $this->helper->get_flags(array());
$pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags);

$this->assertEquals(array(
array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''),
), $pages);

$flags = $this->helper->get_flags(array('rsort'));
$pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags);
$this->assertEquals(array(
array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''),
), $pages);
$flags = $this->helper->get_flags(array('order=custom'));
$pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags);
$this->assertEquals(array(
array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''),
), $pages);

$flags = $this->helper->get_flags(array('order=custom', 'rsort'));
$pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags);
$this->assertEquals(array(
array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''),
array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''),
), $pages);
}
}

0 comments on commit d0eed7e

Please sign in to comment.