90 lines
2.0 KiB
PHP
90 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace Jasny\Twig;
|
|
|
|
use Jasny\Twig\ArrayExtension;
|
|
use Jasny\Twig\TestHelper;
|
|
|
|
/**
|
|
* @covers Jasny\Twig\ArrayExtension
|
|
*/
|
|
class ArrayExtensionTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
use TestHelper;
|
|
|
|
protected function getExtension()
|
|
{
|
|
return new ArrayExtension();
|
|
}
|
|
|
|
|
|
public function testSum()
|
|
{
|
|
$data = [1, 2, 3, 4];
|
|
|
|
$this->assertRender('10', '{{ data|sum }}', compact('data'));
|
|
}
|
|
|
|
public function testProduct()
|
|
{
|
|
$data = [1, 2, 3, 4];
|
|
|
|
$this->assertRender('24', '{{ data|product }}', compact('data'));
|
|
}
|
|
|
|
public function testValues()
|
|
{
|
|
$data = (object)['foo' => 1, 'bar' => 2, 'zoo' => 3];
|
|
|
|
$this->assertRender('1-2-3', '{{ data|values|join("-") }}', compact('data'));
|
|
}
|
|
|
|
|
|
public function testAsArrayWithObject()
|
|
{
|
|
$data = (object)['foo' => 1, 'bar' => 2, 'zoo' => 3];
|
|
|
|
$this->assertRender('foo-bar-zoo', '{{ data|as_array|keys|join("-") }}', compact('data'));
|
|
}
|
|
|
|
public function testAsArrayWithString()
|
|
{
|
|
$data = 'foo';
|
|
|
|
$this->assertRender('foo', '{{ data|as_array|join("-") }}', compact('data'));
|
|
}
|
|
|
|
public function testHtmlAttr()
|
|
{
|
|
$data = ['href' => 'foo.html', 'class' => 'big small', 'checked' => true, 'disabled' => false];
|
|
|
|
$this->assertRender(
|
|
'href="foo.html" class="big small" checked="checked"',
|
|
'{{ data|html_attr|raw }}',
|
|
compact('data')
|
|
);
|
|
}
|
|
|
|
|
|
public function filterProvider()
|
|
{
|
|
return [
|
|
['sum'],
|
|
['product'],
|
|
['values'],
|
|
['as_array'],
|
|
['html_attr']
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @dataProvider filterProvider
|
|
*
|
|
* @param string $filter
|
|
*/
|
|
public function testWithNull($filter)
|
|
{
|
|
$this->assertRender('-', '{{ null|' . $filter . '("//")|default("-") }}');
|
|
}
|
|
}
|