Skip to content

Commit edfe5ba

Browse files
committed
untangled the tests
1 parent 77d8088 commit edfe5ba

20 files changed

+782
-404
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource ContainerTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
class ContainerTest extends HTML5TestBase{
15+
16+
public function containerDataProvider(){
17+
return [
18+
['[div]a div[/div]', '<div class="bb-container left">a div</div>'],
19+
['[div align=right]an aligned div[/div]', '<div class="bb-container right">an aligned div</div>'],
20+
['[p]a paragraph[/p]', '<p class="bb-container left">a paragraph</p>'],
21+
['[p align=right]an aligned paragraph[/p]', '<p class="bb-container right">an aligned paragraph</p>'],
22+
['[left]left[/left]', '<p class="bb-container left">left</p>'],
23+
['[left align=right]WAT[/left]', '<p class="bb-container left">WAT</p>'],
24+
['[right]right[/right]', '<p class="bb-container right">right</p>'],
25+
['[center]center[/center]', '<p class="bb-container center">center</p>'],
26+
];
27+
}
28+
29+
/**
30+
* @dataProvider containerDataProvider
31+
*/
32+
public function testContainerModule($bbcode, $expected){
33+
$this->assertEquals($expected, $this->parser->parse($bbcode));
34+
}
35+
36+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource ExpanderTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
/**
15+
* Class ExpanderTest
16+
*/
17+
class ExpanderTest extends HTML5TestBase{
18+
19+
public function expanderDataProvider(){
20+
return [
21+
['[expander]expander[/expander]', '<div data-id="abcdef12" title="Expander" class="expander-header expander">Expander</div><div id="abcdef12" class="expander-body" style="display:block">expander</div>'],
22+
['[expander hide=1]expander[/expander]', '<div data-id="abcdef12" title="Expander" class="expander-header expander">Expander</div><div id="abcdef12" class="expander-body" style="display:none">expander</div>'],
23+
['[quote]quote[/quote]', '<div data-id="abcdef12" title="Quote" class="quote-header expander">Quote</div><div id="abcdef12" class="quote-body" style="display:block">quote</div>'],
24+
['[quote name=\'some person\' url=http://www.example.com hide=1]quote[/quote]', '<div data-id="abcdef12" title="Quote: some person, source: http://www.example.com" class="quote-header expander">Quote: some person <small>[<a href="http://www.example.com">source</a>]<small></div><div id="abcdef12" class="quote-body" style="display:none">quote</div>'],
25+
['[spoiler]spoiler[/spoiler]', '<div data-id="abcdef12" title="Spoiler" class="spoiler-header expander">Spoiler</div><div id="abcdef12" class="spoiler-body" style="display:none">spoiler</div>'],
26+
['[spoiler hide=0]spoiler[/spoiler]', '<div data-id="abcdef12" title="Spoiler" class="spoiler-header expander">Spoiler</div><div id="abcdef12" class="spoiler-body" style="display:none">spoiler</div>'],
27+
['[trigger]trigger warning[/trigger]', '<div data-id="abcdef12" title="Trigger warning! The following content may be harmful to sensitive audience!" class="trigger-header expander">Trigger warning! The following content may be harmful to sensitive audience!</div><div id="abcdef12" class="trigger-body" style="display:none">trigger warning</div>'],
28+
['[trigger hide=0]trigger warning[/trigger]', '<div data-id="abcdef12" title="Trigger warning! The following content may be harmful to sensitive audience!" class="trigger-header expander">Trigger warning! The following content may be harmful to sensitive audience!</div><div id="abcdef12" class="trigger-body" style="display:none">trigger warning</div>'],
29+
];
30+
}
31+
32+
/**
33+
* @dataProvider expanderDataProvider
34+
*/
35+
public function testExpanderModule($bbcode, $expected){
36+
$this->assertEquals($expected, preg_replace('/\"([a-f\d]{8})\"/i', '"abcdef12"', $this->parser->parse($bbcode)));
37+
}
38+
39+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource HTML5ModuleTestCritical.php
5+
* @created 11.02.2016
6+
* @package chillerlan\BBCodeTest\normal\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
use chillerlan\bbcode\Modules\Html5\Simpletext;
15+
16+
/**
17+
* Class HTML5ModuleTestCritical
18+
*/
19+
class HTML5ModuleTest extends HTML5TestBase{
20+
21+
public function testSanitizeCoverage(){
22+
$this->assertEquals('<span class="bb-text bold">&amp;</span>', $this->parser->parse('[b]&[/b]'));
23+
}
24+
25+
public function emptyTagDataProvider($tag){
26+
$this->setUp();
27+
return [array_keys($this->parser->getTagmap())];
28+
}
29+
30+
/**
31+
* @dataProvider emptyTagDataProvider
32+
*/
33+
public function testEmptyTags($tag){
34+
$exceptions = ['tr','td','th'];
35+
36+
if(!in_array($tag, $this->parser->getSingle()) && !in_array($tag, $exceptions)){
37+
$this->assertEquals('', $this->parser->parse('['.$tag.'][/'.$tag.']'));
38+
}
39+
else if(in_array($tag, $exceptions)){
40+
$this->assertEquals('<'.$tag.'></'.$tag.'>', $this->parser->parse('['.$tag.'][/'.$tag.']'));
41+
}
42+
else{
43+
$expected = [
44+
'br' => '<br />',
45+
'col' => '<col />',
46+
'hr' => '<hr />',
47+
'xkcd' => '',
48+
'clear' => '<br class="bb-clear both" />',
49+
][$tag];
50+
51+
$this->assertEquals($expected, $this->parser->parse('['.$tag.']'));
52+
}
53+
}
54+
55+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource HTML5TestBase.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
use chillerlan\bbcode\Modules\Html5\Html5BaseModule;
15+
use chillerlan\bbcode\Parser;
16+
use chillerlan\bbcode\ParserOptions;
17+
use chillerlan\BBCodeTest\normal\Modules\ModuleTestBase;
18+
19+
/**
20+
* Class HTML5TestBase
21+
*/
22+
class HTML5TestBase extends ModuleTestBase{
23+
24+
protected function setUp(){
25+
26+
$options = new ParserOptions;
27+
$options->ca_info = self::TESTDIR.'test-cacert.pem';
28+
$options->baseModuleInterface = Html5BaseModule::class;
29+
$options->allow_all = true;
30+
31+
$this->parser = new Parser($options);
32+
}
33+
34+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource LinkTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
/**
15+
* Class LinkTest
16+
*/
17+
class LinkTest extends HTML5TestBase{
18+
19+
public function linkDataProvider(){
20+
return [
21+
['[url]https://github.com/chillerlan/bbcode[/url]', '<a href="https://github.com/chillerlan/bbcode" target="_blank" class="blank">https://github.com/chillerlan/bbcode</a>'],
22+
['[url=https://github.com/chillerlan/bbcode]chillerlan/bbcode[/url]', '<a href="https://github.com/chillerlan/bbcode" target="_blank" class="blank">chillerlan/bbcode</a>'],
23+
['[url=https://github.com/chillerlan/bbcode title=\'some stuff\' class=some-css-class]chillerlan/bbcode[/url]', '<a href="https://github.com/chillerlan/bbcode" target="_blank" title="some stuff" class="some-css-class blank">chillerlan/bbcode</a>'],
24+
];
25+
}
26+
27+
/**
28+
* @dataProvider linkDataProvider
29+
*/
30+
public function testLinkModule($bbcode, $expected){
31+
$this->assertEquals($expected, $this->parser->parse($bbcode));
32+
}
33+
34+
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource ListTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
/**
15+
* Class ListTest
16+
*/
17+
class ListTest extends HTML5TestBase{
18+
19+
const INNER_BB = '[*]blah[*]blubb[*]foo[*]bar';
20+
const INNER_HTML = '<li>blah</li><li>blubb</li><li>foo</li><li>bar</li>';
21+
22+
public function orderedListDataProvider(){
23+
return [
24+
['0', 'decimal-leading-zero'],
25+
['1', 'decimal'],
26+
['a', 'lower-alpha'],
27+
['A', 'upper-alpha'],
28+
['i', 'lower-roman'],
29+
['I', 'upper-roman'],
30+
];
31+
}
32+
33+
/**
34+
* @dataProvider orderedListDataProvider
35+
*/
36+
public function testListModuleOrdered($type, $css){
37+
38+
$testdata = [
39+
// type only
40+
'[list type='.$type.']'.self::INNER_BB.'[/list]'
41+
=> '<ol class="bb-list '.$css.'">'.self::INNER_HTML.'</ol>',
42+
// reversed
43+
'[list type='.$type.' reversed=1]'.self::INNER_BB.'[/list]'
44+
=> '<ol reversed="true" class="bb-list '.$css.'">'.self::INNER_HTML.'</ol>',
45+
// start
46+
'[list=42 type='.$type.']'.self::INNER_BB.'[/list]'
47+
=> '<ol start="42" class="bb-list '.$css.'">'.self::INNER_HTML.'</ol>',
48+
// all
49+
'[list=42 type='.$type.' reversed=1 class=foobar title=WAT]'.self::INNER_BB.'[/list]'
50+
=> '<ol start="42" reversed="true" title="WAT" class="foobar bb-list '.$css.'">'.self::INNER_HTML.'</ol>',
51+
];
52+
53+
foreach($testdata as $bbcode => $expected){
54+
$this->assertEquals($expected, $this->parser->parse($bbcode));
55+
}
56+
57+
}
58+
59+
public function unorderedListDataProvider(){
60+
return [
61+
['c', 'circle'],
62+
['d', 'disc'],
63+
['s', 'square'],
64+
];
65+
}
66+
67+
/**
68+
* @dataProvider unorderedListDataProvider
69+
*/
70+
public function testListModuleUnordered($type, $css){
71+
72+
$testdata = [
73+
// type only
74+
'[list type='.$type.']'.self::INNER_BB.'[/list]',
75+
// should not happen...
76+
'[list=42 reversed=1 type='.$type.']'.self::INNER_BB.'[/list]',
77+
];
78+
79+
foreach($testdata as $bbcode){
80+
$this->assertEquals('<ul class="bb-list '.$css.'">'.self::INNER_HTML.'</ul>', $this->parser->parse($bbcode));
81+
}
82+
83+
}
84+
85+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource SimpletextTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
use chillerlan\bbcode\Modules\Html5\Simpletext;
14+
15+
/**
16+
* Class SimpletextTest
17+
*/
18+
class SimpletextTest extends HTML5TestBase{
19+
20+
public function simpletextDataProvider($tag){
21+
$this->setUp();
22+
return [array_keys($this->parser->getTagmap(), Simpletext::class)];
23+
}
24+
25+
/**
26+
* @dataProvider simpletextDataProvider
27+
*/
28+
public function testSimpletextModule($tag){
29+
$expected = '<'.$tag.' class="foobar">WAT</'.$tag.'>';
30+
31+
$this->assertEquals($expected, $this->parser->parse('['.$tag.' class=foobar]WAT[/'.$tag.']'));
32+
}
33+
34+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
/**
3+
*
4+
* @filesource SingleTagTest.php
5+
* @created 04.03.2016
6+
* @package chillerlan\BBCodeTest\normal\Modules\HTML5
7+
* @author Smiley <smiley@chillerlan.net>
8+
* @copyright 2015 Smiley
9+
* @license MIT
10+
*/
11+
12+
namespace chillerlan\BBCodeTest\normal\Modules\HTML5;
13+
14+
/**
15+
* Class SingleTagTest
16+
*/
17+
class SingleTagTest extends HTML5TestBase{
18+
19+
public function singletagDataProvider(){
20+
return [
21+
['[br]', '<br />'],
22+
['[hr]', '<hr />'],
23+
['[clear]', '<br class="bb-clear both" />'],
24+
['[col]', '<col />'],
25+
['[xkcd]', ''],
26+
['[xkcd=1530]', '<a href="https://xkcd.com/1530/" class="bb-xkcd">[xkcd 1530]</a>'],
27+
];
28+
}
29+
30+
/**
31+
* @dataProvider singletagDataProvider
32+
*/
33+
public function testSingletagModule($tag, $expected){
34+
$this->assertEquals($expected, $this->parser->parse($tag));
35+
}
36+
37+
}

0 commit comments

Comments
 (0)