/**
  * @dataProvider filterProvider
  */
 public function testApply(array $filterParameters, array $query, $expected)
 {
     $request = Request::create('/api/dummies', 'GET', $query);
     $requestStack = new RequestStack();
     $requestStack->push($request);
     $queryBuilder = $this->getQueryBuilder();
     $filter = new SearchFilter($this->managerRegistry, $requestStack, $this->iriConverter, $this->propertyAccessor, $filterParameters['properties']);
     $filter->apply($this->resource, $queryBuilder);
     $actual = strtolower($queryBuilder->getQuery()->getDQL());
     $expectedDql = strtolower($expected['dql']);
     $this->assertEquals($expectedDql, $actual, sprintf('Expected `%s` for this `%s %s` request', $expectedDql, 'GET', $request->getUri()));
     if (!empty($expected['parameters'])) {
         foreach ($expected['parameters'] as $parameter => $expectedValue) {
             $actualValue = $queryBuilder->getQuery()->getParameter($parameter)->getValue();
             $this->assertEquals($expectedValue, $actualValue, sprintf('Expected `%s` for this `%s %s` request', $expectedValue, 'GET', $request->getUri()));
         }
     }
 }
 public function testGetDescription()
 {
     $filter = new SearchFilter($this->managerRegistry, new RequestStack(), $this->iriConverter, $this->propertyAccessor);
     $this->assertEquals(['id' => ['property' => 'id', 'type' => 'integer', 'required' => false, 'strategy' => 'exact'], 'name' => ['property' => 'name', 'type' => 'string', 'required' => false, 'strategy' => 'exact'], 'alias' => ['property' => 'alias', 'type' => 'string', 'required' => false, 'strategy' => 'exact'], 'description' => ['property' => 'description', 'type' => 'string', 'required' => false, 'strategy' => 'exact'], 'dummy' => ['property' => 'dummy', 'type' => 'string', 'required' => false, 'strategy' => 'exact'], 'dummyDate' => ['property' => 'dummyDate', 'type' => 'datetime', 'required' => false, 'strategy' => 'exact'], 'jsonData' => ['property' => 'jsonData', 'type' => 'json_array', 'required' => false, 'strategy' => 'exact'], 'nameConverted' => ['property' => 'nameConverted', 'type' => 'string', 'required' => false, 'strategy' => 'exact']], $filter->getDescription($this->resource));
     $filter = new SearchFilter($this->managerRegistry, new RequestStack(), $this->iriConverter, $this->propertyAccessor, ['id' => null, 'name' => null, 'alias' => null, 'dummy' => null, 'dummyDate' => null, 'jsonData' => null, 'nameConverted' => null, 'foo' => null, 'relatedDummies.dummyDate' => null, 'relatedDummy' => null]);
     $this->assertEquals(['id' => ['property' => 'id', 'type' => 'integer', 'required' => false, 'strategy' => 'exact'], 'name' => ['property' => 'name', 'type' => 'string', 'required' => false, 'strategy' => 'exact'], 'alias' => ['property' => 'alias', 'type' => 'string', 'required' => false, 'strategy' => 'exact'], 'dummy' => ['property' => 'dummy', 'type' => 'string', 'required' => false, 'strategy' => 'exact'], 'dummyDate' => ['property' => 'dummyDate', 'type' => 'datetime', 'required' => false, 'strategy' => 'exact'], 'jsonData' => ['property' => 'jsonData', 'type' => 'json_array', 'required' => false, 'strategy' => 'exact'], 'nameConverted' => ['property' => 'nameConverted', 'type' => 'string', 'required' => false, 'strategy' => 'exact'], 'relatedDummies.dummyDate' => ['property' => 'relatedDummies.dummyDate', 'type' => 'datetime', 'required' => false, 'strategy' => 'exact'], 'relatedDummy' => ['property' => 'relatedDummy', 'type' => 'iri', 'required' => false, 'strategy' => 'exact'], 'relatedDummy[]' => ['property' => 'relatedDummy', 'type' => 'iri', 'required' => false, 'strategy' => 'exact']], $filter->getDescription($this->resource));
 }