BooleanFilterTest.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. /*
  3. * This file is part of the Sonata package.
  4. *
  5. * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Sonata\DoctrineORMAdminBundle\Tests\Filter;
  11. use Sonata\DoctrineORMAdminBundle\Filter\BooleanFilter;
  12. use Sonata\AdminBundle\Form\Type\BooleanType;
  13. use Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery;
  14. use Doctrine\DBAL\Query\Expression\ExpressionBuilder;
  15. class BooleanFilterTest extends \PHPUnit_Framework_TestCase
  16. {
  17. public function testFilterEmpty()
  18. {
  19. $filter = new BooleanFilter;
  20. $filter->initialize('field_name', array('field_options' => array('class' => 'FooBar')));
  21. $builder = new ProxyQuery(new QueryBuilder);
  22. $filter->filter($builder, 'alias', 'field', null);
  23. $filter->filter($builder, 'alias', 'field', '');
  24. $filter->filter($builder, 'alias', 'field', 'test');
  25. $filter->filter($builder, 'alias', 'field', false);
  26. $filter->filter($builder, 'alias', 'field', array());
  27. $filter->filter($builder, 'alias', 'field', array(null, 'test'));
  28. $this->assertEquals(array(), $builder->query);
  29. $this->assertEquals(false, $filter->isActive());
  30. }
  31. public function testFilterNo()
  32. {
  33. $filter = new BooleanFilter;
  34. $filter->initialize('field_name', array('field_options' => array('class' => 'FooBar')));
  35. $builder = new ProxyQuery(new QueryBuilder);
  36. $filter->filter($builder, 'alias', 'field', array('type' => null, 'value' => BooleanType::TYPE_NO));
  37. $this->assertEquals(array('alias.field = :field_name_0'), $builder->query);
  38. $this->assertEquals(array('field_name_0' => 0), $builder->parameters);
  39. $this->assertEquals(true, $filter->isActive());
  40. }
  41. public function testFilterYes()
  42. {
  43. $filter = new BooleanFilter;
  44. $filter->initialize('field_name', array('field_options' => array('class' => 'FooBar')));
  45. $builder = new ProxyQuery(new QueryBuilder);
  46. $filter->filter($builder, 'alias', 'field', array('type' => null, 'value' => BooleanType::TYPE_YES));
  47. $this->assertEquals(array('alias.field = :field_name_0'), $builder->query);
  48. $this->assertEquals(array('field_name_0' => 1), $builder->parameters);
  49. $this->assertEquals(true, $filter->isActive());
  50. }
  51. public function testFilterArray()
  52. {
  53. $filter = new BooleanFilter;
  54. $filter->initialize('field_name', array('field_options' => array('class' => 'FooBar')));
  55. $builder = new ProxyQuery(new QueryBuilder);
  56. $filter->filter($builder, 'alias', 'field', array('type' => null, 'value' => array(BooleanType::TYPE_NO)));
  57. $this->assertEquals(array('in_alias.field', 'alias.field IN ("0")'), $builder->query);
  58. $this->assertEquals(true, $filter->isActive());
  59. }
  60. }