Get unit tests working with trunk version of SimpleTest.
[xhtml-compiler.git] / tests / XHTMLCompiler / FilterManagerTest.php
blobec64cd844839c4036ca328479f023975cd46a8ce
1 <?php
3 class XHTMLCompiler_FilterManagerTest_DOMFilter extends XHTMLCompiler_DOMFilter
5 protected $name = 'Test';
6 function process(DOMDocument $dom, $page, $manager) {
7 $dom->getElementById('document')->appendChild($dom->createElement('p', 'DOMFilter'));
11 class XHTMLCompiler_FilterManagerTest extends UnitTestCase
14 function test_addFilter() {
15 $manager = new XHTMLCompiler_FilterManager();
16 $filter = new XHTMLCompiler_DOMFilterMock($this);
17 $filter->expectOnce('getName');
18 $filter->setReturnValue('getName', 'filter');
19 $filter->setReturnValue('getXCAttributesDefined', array());
20 $manager->addDOMFilter($filter);
23 function test_addFilter_Duplicate() {
24 $manager = new XHTMLCompiler_FilterManager();
25 $filter = new XHTMLCompiler_DOMFilterMock($this);
26 $filter->setReturnValue('getName', 'filter');
27 $filter->setReturnValue('getXCAttributesDefined', array());
28 $filter2 = new XHTMLCompiler_DOMFilterMock($this);
29 $filter2->setReturnValue('getName', 'filter');
30 $manager->addDOMFilter($filter);
31 $this->expectException();
32 $manager->addDOMFilter($filter2);
35 function test_process() {
36 $manager = new XHTMLCompiler_FilterManager();
37 $page = new XHTMLCompiler_PageMock();
38 $input = '1';
40 // using new IsAExpectation('XHTMLCompiler_FilterManager')
41 // since SimpleTest chokes on recursive dependencies
43 $pre_text_filter = new XHTMLCompiler_TextFilterMock($this);
44 $pre_text_filter->setReturnValue('getName', 'banana-filter');
45 $pre_text_filter->expectOnce('process', array('1', $page, new IsAExpectation('XHTMLCompiler_FilterManager')));
46 $pre_text_filter->setReturnValue('process', '2');
47 $pre_text_filter2 = new XHTMLCompiler_TextFilterMock($this);
48 $pre_text_filter2->setReturnValue('getName', 'apple-filter');
49 $pre_text_filter2->expectOnce('process', array('2', $page, new IsAExpectation('XHTMLCompiler_FilterManager')));
50 $pre_text_filter2->setReturnValue('process',
51 '<?xml version="1.0" encoding="UTF-8"?>
52 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
53 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
54 xmlns:proprietary="urn:foobar:foofoofoo">
55 <head><title>Hmmm...</title></head>
56 <body id="document"><p>Meta.</p></body>
57 </html>
58 ');
60 // the first two DOMFilters are duds that don't do anything
61 $dom_filter = new XHTMLCompiler_DOMFilterMock($this);
62 $dom_filter->setReturnValue('getName', 'filter');
63 $dom_filter->setReturnValue('getXCAttributesDefined', array());
64 $dom_filter->expectOnce('process');
65 $dom_filter2 = new XHTMLCompiler_DOMFilterMock($this);
66 $dom_filter2->setReturnValue('getName', 'filter2');
67 $dom_filter2->setReturnValue('getXCAttributesDefined', array());
68 $dom_filter2->expectOnce('process');
69 $dom_filter3 = new XHTMLCompiler_FilterManagerTest_DOMFilter();
71 $post_text_filter = new XHTMLCompiler_TextFilterMock($this);
72 $post_text_filter->setReturnValue('getName', 'Masumune Plus!');
73 $post_text_filter->expectOnce('process', array(new PatternExpectation('/Meta.+?DOMFilter/s'), $page, new IsAExpectation('XHTMLCompiler_FilterManager')));
74 $post_text_filter->setReturnValue('process', '3');
75 $post_text_filter2 = new XHTMLCompiler_TextFilterMock($this);
76 $post_text_filter2->setReturnValue('getName', 'Piffle-rockers');
77 $post_text_filter2->expectOnce('process', array('3', $page, new IsAExpectation('XHTMLCompiler_FilterManager')));
78 $post_text_filter2->setReturnValue('process',
79 '<?xml version="1.0" encoding="UTF-8"?>
80 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
81 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
82 <head><title>Hmmm...</title></head>
83 <body><b><p>Hotdog.</p></b></body>
84 </html>
85 ');
87 $manager->addPreTextFilter($pre_text_filter);
88 $manager->addPreTextFilter($pre_text_filter2);
89 $manager->addDOMFilter($dom_filter);
90 $manager->addDOMFilter($dom_filter2);
91 $manager->addDOMFilter($dom_filter3);
92 $manager->addPostTextFilter($post_text_filter);
93 $manager->addPostTextFilter($post_text_filter2);
95 $text = $manager->process('1', $page);
97 // assert that the final PostTextFilter worked
98 $this->assertPattern('/Hotdog/', $text);
100 // assert that the validation errors were caught and
101 // displayed accordingly
102 $this->assertPattern('/Error/i', $text);
104 // assert that all proprietary namespaces were scrubbed
105 $this->assertNoPattern('/proprietary/', $text);