Ejemplo n.º 1
0
 /**
  * @covers Cradle\Handlebars\HandlebarsHandler::registerHelper
  */
 public function testRegisterHelper()
 {
     //simple helper
     $this->object->registerHelper('root', function () {
         return '/some/root';
     });
     $template = $this->object->compile('{{root}}/bower_components/eve-font-awesome/awesome.css');
     $results = $template();
     $this->assertEquals('/some/root/bower_components/eve-font-awesome/awesome.css', $results);
     $found = false;
     $self = $this;
     $template = $this->object->reset()->registerHelper('foo', function ($bar, $four, $true, $null, $false, $zoo) use($self, &$found) {
         $self->assertEquals('', $bar);
         $self->assertEquals(4, $four);
         $self->assertTrue($true);
         $self->assertNull($null);
         $self->assertFalse($false);
         $self->assertEquals('foobar', $zoo);
         $found = true;
         return $four + 1;
     })->compile('{{foo bar 4 true null false zoo}}');
     $results = $template(['zoo' => 'foobar']);
     $this->assertTrue($found);
     $this->assertEquals(5, $results);
     $found = false;
     $template = $this->object->reset()->registerHelper('foo', function ($number, $something1, $number2, $something2) use($self, &$found) {
         $self->assertEquals(4.5, $number);
         $self->assertEquals(4, $number2);
         $self->assertEquals('some"thi " ng', $something1);
         $self->assertEquals("some'thi ' ng", $something2);
         $found = true;
         return $something1 . $something2;
     })->compile('{{{foo 4.5 \'some"thi " ng\' 4 "some\'thi \' ng"}}}');
     $results = $template();
     $this->assertTrue($found);
     $this->assertEquals('some"thi " ng' . "some'thi ' ng", $results);
     //attributes test
     $found = false;
     $template = $this->object->reset()->registerHelper('foo', function ($bar, $number, $something1, $number2, $something2, $options) use($self, &$found) {
         $self->assertEquals(4.5, $number);
         $self->assertEquals(4, $number2);
         $self->assertEquals('some"thi " ng', $something1);
         $self->assertEquals("some'thi ' ng", $something2);
         $self->assertFalse($options['hash']['dog']);
         $self->assertEquals('meow', $options['hash']['cat']);
         $self->assertEquals('squeak squeak', $options['hash']['mouse']);
         $found = true;
         return $number2 + 1;
     })->compile('{{foo 4bar4 4.5 \'some"thi " ng\' 4 "some\'thi \' ng" ' . 'dog=false cat="meow" mouse=\'squeak squeak\'}}');
     $results = $template(['zoo' => 'foobar']);
     $this->assertTrue($found);
     $this->assertEquals(5, $results);
 }