*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Sonata\AdminBundle\Tests;
use Sonata\AdminBundle\DependencyInjection\Configuration;
use Symfony\Component\Config\Definition\Processor;
class ConfigurationTest extends \PHPUnit_Framework_TestCase
{
public function testOptions()
{
$config = $this->process(array());
$this->assertTrue($config['options']['html5_validate']);
$this->assertNull($config['options']['pager_links']);
$this->assertTrue($config['options']['confirm_exit']);
$this->assertTrue($config['options']['use_icheck']);
}
public function testOptionsWithInvalidFormat()
{
$this->setExpectedException('Symfony\Component\Config\Definition\Exception\InvalidTypeException');
$config = $this->process(array(array(
'options' => array(
'html5_validate' => '1',
),
)));
}
public function testCustomTemplatesPerAdmin()
{
$config = $this->process(array(array(
'admin_services' => array(
'my_admin_id' => array(
'templates' => array(
'form' => array('form.twig.html', 'form_extra.twig.html'),
'view' => array('user_block' => 'SonataAdminBundle:mycustomtemplate.html.twig'),
'filter' => array(),
),
),
),
)));
$this->assertSame('SonataAdminBundle:mycustomtemplate.html.twig', $config['admin_services']['my_admin_id']['templates']['view']['user_block']);
}
public function testAdminServicesDefault()
{
$config = $this->process(array(array(
'admin_services' => array('my_admin_id' => array()),
)));
$this->assertSame(array(
'model_manager' => null,
'form_contractor' => null,
'show_builder' => null,
'list_builder' => null,
'datagrid_builder' => null,
'translator' => null,
'configuration_pool' => null,
'route_generator' => null,
'validator' => null,
'security_handler' => null,
'label' => null,
'menu_factory' => null,
'route_builder' => null,
'label_translator_strategy' => null,
'pager_type' => null,
'templates' => array(
'form' => array(),
'filter' => array(),
'view' => array(),
),
), $config['admin_services']['my_admin_id']);
}
public function testDashboardWithoutRoles()
{
$config = $this->process(array());
$this->assertEmpty($config['dashboard']['blocks'][0]['roles']);
}
public function testDashboardWithRoles()
{
$config = $this->process(array(array(
'dashboard' => array(
'blocks' => array(array(
'roles' => array('ROLE_ADMIN'),
'type' => 'my.type',
)),
),
)));
$this->assertSame($config['dashboard']['blocks'][0]['roles'], array('ROLE_ADMIN'));
}
public function testDashboardGroups()
{
$config = $this->process(array(array(
'dashboard' => array(
'groups' => array(
'bar' => array(
'label' => 'foo',
'icon' => '',
'items' => array(
'item1',
'item2',
array(
'label' => 'fooLabel',
'route' => 'fooRoute',
'route_params' => array('bar' => 'foo'),
),
array(
'label' => 'barLabel',
'route' => 'barRoute',
),
),
),
),
),
)));
$this->assertCount(4, $config['dashboard']['groups']['bar']['items']);
$this->assertSame(
$config['dashboard']['groups']['bar']['items'][0],
array(
'admin' => 'item1',
'label' => '',
'route' => '',
'route_params' => array(),
)
);
$this->assertSame(
$config['dashboard']['groups']['bar']['items'][1],
array(
'admin' => 'item2',
'label' => '',
'route' => '',
'route_params' => array(),
)
);
$this->assertSame(
$config['dashboard']['groups']['bar']['items'][2],
array(
'label' => 'fooLabel',
'route' => 'fooRoute',
'route_params' => array('bar' => 'foo'),
'admin' => '',
)
);
$this->assertSame(
$config['dashboard']['groups']['bar']['items'][3],
array(
'label' => 'barLabel',
'route' => 'barRoute',
'route_params' => array(),
'admin' => '',
)
);
}
public function testDashboardGroupsWithBadItemsParams()
{
$this->setExpectedException('\InvalidArgumentException', 'Expected either parameters "route" and "label" for array items');
$config = $this->process(array(array(
'dashboard' => array(
'groups' => array(
'bar' => array(
'label' => 'foo',
'icon' => '',
'items' => array(
'item1',
'item2',
array(
'route' => 'fooRoute',
),
),
),
),
),
)));
}
/**
* Processes an array of configurations and returns a compiled version.
*
* @param array $configs An array of raw configurations
*
* @return array A normalized array
*/
protected function process($configs)
{
$processor = new Processor();
return $processor->processConfiguration(new Configuration(), $configs);
}
}