/** * @dataProvider filterProvider */ public function testApply(array $filterParameters, array $query, $expected) { $request = Request::create('/api/dummies', 'GET', $query); $queryBuilder = $this->getQueryBuilder(); $parameter = array_key_exists('parameter', $filterParameters) ? $filterParameters['parameter'] : 'order'; $filter = new OrderFilter($this->managerRegistry, $parameter, $filterParameters['properties']); $filter->apply($this->resource, $queryBuilder, $request); $actual = strtolower($queryBuilder->getQuery()->getDQL()); $expected = strtolower($expected); $this->assertEquals($expected, $actual, sprintf('Expected `%s` for this `%s %s` request', $expected, 'GET', $request->getUri())); }
public function testGetDescriptionDefaultFields() { $filter = new OrderFilter($this->managerRegistry, new RequestStack(), 'order'); $this->assertEquals(['order[id]' => ['property' => 'id', 'type' => 'string', 'required' => false], 'order[name]' => ['property' => 'name', 'type' => 'string', 'required' => false], 'order[alias]' => ['property' => 'alias', 'type' => 'string', 'required' => false], 'order[description]' => ['property' => 'description', 'type' => 'string', 'required' => false], 'order[dummy]' => ['property' => 'dummy', 'type' => 'string', 'required' => false], 'order[dummyDate]' => ['property' => 'dummyDate', 'type' => 'string', 'required' => false], 'order[jsonData]' => ['property' => 'jsonData', 'type' => 'string', 'required' => false], 'order[nameConverted]' => ['property' => 'nameConverted', 'type' => 'string', 'required' => false]], $filter->getDescription($this->resource)); }
/** * @param ManagerRegistry $managerRegistry * @param string $orderParameter Keyword used to retrieve the value. * @param array|null $properties List of property names on which the filter will be enabled. */ public function __construct(ManagerRegistry $managerRegistry, $orderParameter, array $properties = null) { parent::__construct($managerRegistry, $properties); $this->properties = $properties; $this->orderParameter = $orderParameter; }