FilterTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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\Filter;
  12. class FilterTest_Filter extends Filter
  13. {
  14. /**
  15. * Apply the filter to the QueryBuilder instance
  16. *
  17. * @param $queryBuilder
  18. * @param string $alias
  19. * @param string $field
  20. * @param string $value
  21. * @return void
  22. */
  23. public function filter($queryBuilder, $alias, $field, $value)
  24. {
  25. // TODO: Implement filter() method.
  26. }
  27. public function getDefaultOptions()
  28. {
  29. return array('option1' => 2);
  30. }
  31. public function getRenderSettings()
  32. {
  33. return array('sonata_type_filter_default', array(
  34. 'type' => $this->getFieldType(),
  35. 'options' => $this->getFieldOptions()
  36. ));
  37. }
  38. public function testAssociation($queryBuilder, $value)
  39. {
  40. return $this->association($queryBuilder, $value);
  41. }
  42. }
  43. class FilterTest extends \PHPUnit_Framework_TestCase
  44. {
  45. public function testFieldDescription()
  46. {
  47. $filter = new FilterTest_Filter();
  48. $this->assertEquals(array('option1' => 2), $filter->getDefaultOptions());
  49. $this->assertEquals(null, $filter->getOption('1'));
  50. $filter->initialize('field_name', array('field_options' => array('class' => 'FooBar')));
  51. $this->assertEquals(2, $filter->getOption('option1'));
  52. $this->assertEquals(null, $filter->getOption('foo'));
  53. $this->assertEquals('bar', $filter->getOption('foo', 'bar'));
  54. $this->assertEquals('field_name', $filter->getName());
  55. $this->assertEquals('text', $filter->getFieldType());
  56. $this->assertEquals(array('class' => 'FooBar'), $filter->getFieldOptions());
  57. }
  58. public function testValues()
  59. {
  60. $filter = new FilterTest_Filter();
  61. $this->assertEmpty($filter->getValue());
  62. $filter->setValue(42);
  63. $this->assertEquals(42, $filter->getValue());
  64. }
  65. public function testAliasOption()
  66. {
  67. $filter = new FilterTest_Filter();
  68. $filter->initialize('field_name', array('alias' => 'association_alias', 'field_name' => 'field_name'));
  69. $this->assertEquals('association_alias', $filter->getOption('alias'));
  70. $builder = new QueryBuilder;
  71. $this->assertEquals(array('association_alias', 'field_name'), $filter->testAssociation($builder, 'value'));
  72. $filter->initialize('field_name', array('field_name' => 'field_name'));
  73. $this->assertEquals(array($builder->getRootAlias(), 'field_name'), $filter->testAssociation($builder, 'value'));
  74. }
  75. /**
  76. * @expectedException RuntimeException
  77. */
  78. public function testExceptionOnEmptyFieldName()
  79. {
  80. $filter = new FilterTest_Filter();
  81. $filter->getFieldName();
  82. }
  83. }