Merge "Remove uncalled Skin::getNamespaceNotice"
[lhc/web/wiklou.git] / tests / phpunit / includes / TemplateParserTest.php
index f884a8e..ddef24a 100644 (file)
@@ -12,71 +12,64 @@ class TemplateParserTest extends MediaWikiTestCase {
 
                $this->setMwGlobals( array(
                        'wgSecretKey' => 'foo',
-                       'wgMemc' => new EmptyBagOStuff(),
                ) );
 
                $this->templateDir = dirname( __DIR__ ) . '/data/templates/';
        }
 
        /**
+        * @dataProvider provideProcessTemplate
+        * @covers TemplateParser::processTemplate
+        * @covers TemplateParser::getTemplate
         * @covers TemplateParser::getTemplateFilename
-        * @dataProvider provideGetTemplateFilename
         */
-       public function testGetTemplateFilename( $dir, $name, $result, $exception = false ) {
+       public function testProcessTemplate( $name, $args, $result, $exception = false ) {
                if ( $exception ) {
                        $this->setExpectedException( $exception );
                }
-
-               $tp = new TemplateParser( $dir );
-               $path = $tp->getTemplateFilename( $name );
-               $this->assertEquals( $result, $path );
+               $tp = new TemplateParser( $this->templateDir );
+               $this->assertEquals( $result, $tp->processTemplate( $name, $args ) );
        }
 
-       public static function provideGetTemplateFilename() {
+       public static function provideProcessTemplate() {
                return array(
                        array(
-                               'dir/templates',
                                'foobar',
-                               'dir/templates/foobar.mustache',
+                               array(),
+                               "hello world!\n"
+                       ),
+                       array(
+                               'foobar_args',
+                               array(
+                                       'planet' => 'world',
+                               ),
+                               "hello world!\n",
                        ),
                        array(
-                               'dir/templates',
                                '../foobar',
-                               '',
+                               array(),
+                               false,
                                'UnexpectedValueException'
                        ),
-               );
-       }
-
-       /**
-        * @covers TemplateParser::getTemplate
-        */
-       public function testGetTemplate() {
-               $tp = new TemplateParser( $this->templateDir );
-               $this->assertTrue( is_callable( $tp->getTemplate( 'foobar' ) ) );
-       }
-
-       /**
-        * @covers TemplateParser::compile
-        */
-       public function testTemplateCompilation() {
-               $this->assertRegExp(
-                       '/^<\?php return function/',
-                       TemplateParser::compile( "test" ),
-                       'compile a simple mustache template'
-               );
-       }
-
-       /**
-        * @covers TemplateParser::compile
-        */
-       public function testTemplateCompilationWithVariable() {
-               $this->assertRegExp(
-                       '/return \'\'\.htmlentities\(\(string\)\(\(isset\(\$in\[\'value\'\]\) && '
-                               . 'is_array\(\$in\)\) \? \$in\[\'value\'\] : null\), ENT_QUOTES, '
-                               . '\'UTF-8\'\)\.\'\';/',
-                       TemplateParser::compile( "{{value}}" ),
-                       'compile a mustache template with an escaped variable'
+                       array(
+                               'nonexistenttemplate',
+                               array(),
+                               false,
+                               'RuntimeException',
+                       ),
+                       array(
+                               'has_partial',
+                               array(
+                                       'planet' => 'world',
+                               ),
+                               "Partial hello world!\n in here\n",
+                       ),
+                       array(
+                               'bad_partial',
+                               array(),
+                               false,
+                               'Exception',
+                       ),
                );
        }
 }