el = new EditLib();
}
/**
* remove the external Wikis defined in the tests
*/
protected function tearDown(): void
{
global $tikilib;
$query = 'SELECT `name`, `extwikiId` FROM `tiki_extwiki`';
$wikis = $tikilib->fetchMap($query);
$tmp_wikis = [$this->ext1];
foreach ($tmp_wikis as $w) {
if (isset($wikis[$w])) {
$id = $wikis[$w];
$tikilib::lib('admin')->remove_extwiki($id);
}
}
}
/**
* Test links to pages of an external Wiki
*
* Note: Links with an invalid wiki identifier are parsed as regular Wiki page links.
*/
public function testExternalWiki(): void
{
/*
* setup the external wikis and the parser
*/
global $tikilib;
$tikilib::lib('admin')->replace_extwiki(0, 'http://tikiwiki.org/tiki-index.php?page=$page', $this->ext1);
/*
* External Wiki
* - page name
*/
$inData = 'Download';
$ex = "(($this->ext1:Download))";
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* External Wiki
* - page name
* - anchor
*/
$inData = 'Download';
$ex = "(($this->ext1:Download|#LTS_-_the_Long_Term_Support_release))";
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* External Wiki
* - page name
* - anchor
* - description
*/
$inData = 'Download LTS';
$ex = "(($this->ext1:Download|#LTS_-_the_Long_Term_Support_release|Download LTS))";
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* External Wiki
* - page name
* - additional class name
*/
$inData = 'Download';
$ex = "(($this->ext1:Download))";
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* External Wiki
* - page name
* - invalid class name
*/
$inData = 'Download';
$ex = '[http://tikiwiki.org/tiki-index.php?page=Download|Download]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* External Wiki
* - line breaks
*/
$inData = 'Download
Download
Text';
$ex = '((' . $this->ext1 . ':Download %%% Download))\nText';
$out = $this->el->parseToWiki($inData);
$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
$this->assertEquals($ex, $out);
/*
* External Site
* - pipe chars in href parameters
*/
$inData = 'link with pipes';
$ex = '[https://tiki.org/Community?not%7Ca%7Cwiki%7Ctable|link with pipes]';
$out = $this->el->parseToWiki($inData);
$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
$this->assertEquals($ex, $out);
}
/**
* Test link to anchor within a page
*/
public function testInPage(): void
{
/*
* no description
*/
$inData = '#A_Heading';
$ex = '[#A_Heading]';
$out = trim($this->el->parseToWiki($inData));
$this->assertEquals($ex, $out);
/*
* with description
*/
$inData = 'Link to heading';
$ex = '[#A_Heading|Link to heading]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* line breaks
*/
$inData = 'Link to
heading
Text';
$ex = '[#A_Heading|Link to %%% heading]\nText';
$out = $this->el->parseToWiki($inData);
$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
$this->assertEquals($ex, $out);
}
/**
* Test link for creating e-mail
*/
public function testMailTo(): void
{
/*
* e-mail
*/
$inData = 'mailto:sombody@nowhere.xyz';
$ex = '[mailto:sombody@nowhere.xyz]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* e-mail with description
*/
$inData = 'Mail to "Somebody"';
$ex = '[mailto:sombody@nowhere.xyz|Mail to "Somebody"]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* line breaks
*/
$inData = 'Mail to
"Somebody"
Text';
$ex = '[mailto:sombody@nowhere.xyz|Mail to %%% "Somebody"]\nText';
$out = $this->el->parseToWiki($inData);
$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
$this->assertEquals($ex, $out);
}
/**
* Test links to articles, blogs, ...
*/
public function testOtherTikiPages(): void
{
/*
* article
*/
$inData = 'article1';
$ex = '[article1]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
$inData = 'An Article';
$ex = '[article1|An Article]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
$inData = 'An
Article
Text';
$ex = '[article1|An %%% Article]\nText';
$out = $this->el->parseToWiki($inData);
$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
$this->assertEquals($ex, $out);
/*
* blog
*/
$inData = 'blog1';
$ex = '[blog1]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
$inData = 'A Blog';
$ex = '[blog1|A Blog]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
$inData = 'A
Blog
Text';
$ex = '[blog1|A %%% Blog]\nText';
$out = $this->el->parseToWiki($inData);
$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
$this->assertEquals($ex, $out);
/*
* forum
*/
$inData = 'forum1';
$ex = '[forum1]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
$inData = 'A Forum';
$ex = '[forum1|A Forum]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
$inData = 'A
Forum
Text';
$ex = '[forum1|A %%% Forum]\nText';
$out = $this->el->parseToWiki($inData);
$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
$this->assertEquals($ex, $out);
}
/**
* Test links to web pages
*/
public function testWebResource(): void
{
/*
* Web Page:
* - link
*/
$inData = 'http://www.tiki.org';
$ex = '[http://www.tiki.org]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* Web Page:
* - link
* - description
*/
$inData = 'Tiki Wiki CMS Groupware';
$ex = '[http://www.tiki.org|Tiki Wiki CMS Groupware]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* Web Page:
* - link
* - description
* - anchor
*/
$inData = 'News of the Tiki Wiki CMS Groupware';
$ex = '[http://www.tiki.org#Tiki_News_|News of the Tiki Wiki CMS Groupware]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* Web Page:
* - link
* - description
* - anchor
* - box
*/
$inData = 'News of the Tiki Wiki CMS Groupware';
$ex = '[http://www.tiki.org#Tiki_News_|News of the Tiki Wiki CMS Groupware|box]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* Web Page:
* - link
* - description and linebreak
*/
$inData = 'Tiki Wiki
CMS Groupware
Text';
$ex = '[http://www.tiki.org|Tiki Wiki %%% CMS Groupware]\nText';
$out = $this->el->parseToWiki($inData);
$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
$this->assertEquals($ex, $out);
/*
* Link to video
* - link
*
*/
$inData = 'http://www.youtube.com/v/KBewVCducWw&autoplay=1';
$ex = '[http://www.youtube.com/v/KBewVCducWw&autoplay=1]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* Link to video
* - link
* - description
*/
$inData = 'You Tube video in their flash player';
$ex = '[http://www.youtube.com/v/KBewVCducWw&autoplay=1|You Tube video in their flash player]';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* Link to video
* - link
* - description
* - box
*/
$inData = 'You Tube video in their flash player';
$ex = '[http://www.youtube.com/v/KBewVCducWw&autoplay=1|You Tube video in their flash player|box]'; // additional nocache does not work
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* Link to video
* - link
* - description
* - box with dimensions
*/
$inData = 'You Tube video in their flash player';
$ex = '[http://www.youtube.com/v/KBewVCducWw&autoplay=1|You Tube video in their flash player|box;width=405;height=340;]'; // additional nocache does not work
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
}
/**
* Test links to internal wiki pages
*/
public function testWikiPage(): void
{
/*
* - page name = description
*/
$inData = 'HomePage';
$ex = '((HomePage))';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* - page
* - description
*/
$inData = 'The Home Page';
$ex = '((HomePage|The Home Page))';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* - page
* - link to an anchor
*/
$inData = 'HomePage';
$ex = '((HomePage|#Get_Started_using_Admin_Panel))';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* - page
* - link to an anchor
* - description
*/
$inData = 'Home Page, Heading "Admin Panel"';
$ex = '((HomePage|#Get_Started_using_Admin_Panel|Home Page, Heading "Admin Panel"))';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* Internation characters
*/
$inData = 'äöü€ Page';
$ex = '((äöü€ Page))';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
/*
* Line breaks
*/
$inData = 'Home
Page
Another Line';
$ex = '((HomePage|Home %%% Page))\nAnother Line';
$out = $this->el->parseToWiki($inData);
$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
$this->assertEquals($ex, $out);
}
/*
* Test anchors conversion to {ANAME}
*/
public function testPluginAname(): void
{
$ex = "{ANAME()}anchor{ANAME}";
$inData = '';
$out = $this->el->parseToWiki($inData);
$this->assertEquals($ex, $out);
}
}