BooleanFilterTest.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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\AdminBundle\Tests\Filter\ORM;
  11. use Sonata\AdminBundle\Filter\ORM\BooleanFilter;
  12. use Sonata\AdminBundle\Form\Type\Filter\BooleanType;
  13. class BooleanFilterTest extends \PHPUnit_Framework_TestCase
  14. {
  15. public function getFieldDescription(array $options)
  16. {
  17. $fieldDescription = $this->getMock('Sonata\AdminBundle\Admin\FieldDescriptionInterface');
  18. $fieldDescription->expects($this->once())
  19. ->method('getOptions')
  20. ->will($this->returnValue($options));
  21. $fieldDescription->expects($this->once())
  22. ->method('getName')
  23. ->will($this->returnValue('field_name'));
  24. return $fieldDescription;
  25. }
  26. public function testFilterEmpty()
  27. {
  28. $filter = new BooleanFilter;
  29. $filter->setFieldDescription($this->getFieldDescription(array('field_options' => array('class' => 'FooBar'))));
  30. $builder = new QueryBuilder;
  31. $filter->filter($builder, 'alias', 'field', null);
  32. $filter->filter($builder, 'alias', 'field', '');
  33. $filter->filter($builder, 'alias', 'field', 'test');
  34. $filter->filter($builder, 'alias', 'field', false);
  35. $filter->filter($builder, 'alias', 'field', array());
  36. $filter->filter($builder, 'alias', 'field', array(null, 'test'));
  37. $this->assertEquals(array(), $builder->query);
  38. }
  39. public function testFilterNo()
  40. {
  41. $filter = new BooleanFilter;
  42. $filter->setFieldDescription($this->getFieldDescription(array('field_options' => array('class' => 'FooBar'))));
  43. $builder = new QueryBuilder;
  44. $filter->filter($builder, 'alias', 'field', BooleanType::TYPE_NO);
  45. $this->assertEquals(array('alias.field = :field_name'), $builder->query);
  46. $this->assertEquals(array('field_name' => 0), $builder->parameters);
  47. }
  48. public function testFilterYes()
  49. {
  50. $filter = new BooleanFilter;
  51. $filter->setFieldDescription($this->getFieldDescription(array('field_options' => array('class' => 'FooBar'))));
  52. $builder = new QueryBuilder;
  53. $filter->filter($builder, 'alias', 'field', BooleanType::TYPE_YES);
  54. $this->assertEquals(array('alias.field = :field_name'), $builder->query);
  55. $this->assertEquals(array('field_name' => 1), $builder->parameters);
  56. }
  57. public function testFilterArray()
  58. {
  59. $filter = new BooleanFilter;
  60. $filter->setFieldDescription($this->getFieldDescription(array('field_options' => array('class' => 'FooBar'))));
  61. $builder = new QueryBuilder;
  62. $filter->filter($builder, 'alias', 'field', array(BooleanType::TYPE_NO));
  63. $this->assertEquals(array('in_alias.field', 'alias.field IN ("0")'), $builder->query);
  64. }
  65. }