/** @test */
 public function it_adds_filters_to_query_on_the_parent_resources()
 {
     $qb = $this->em->createQueryBuilder()->select('x')->from(Post::class, 'x');
     $manager = $this->getMockBuilder(ApiManager::class)->disableOriginalConstructor()->setMethods(['getBundlePrefix'])->getMock();
     $manager->method('getBundlePrefix')->willReturn('some.prefix');
     $categoryResource = new ApiResource('categories', ['entity' => Category::class, 'filter' => null, 'pagination' => ['enabled' => true, 'limit' => 10], 'form_type' => DynamicFormType::class, 'identifier' => 'id']);
     $categoryResource->setManager($manager);
     $postResource = new ApiResource('posts', ['entity' => Post::class, 'filter' => null, 'pagination' => ['enabled' => true, 'limit' => 10], 'form_type' => DynamicFormType::class, 'identifier' => 'id']);
     $postResource->setParentResource($categoryResource);
     $filter = new FilterDecorator($postResource);
     $builder = new FilterBuilder();
     $builder->setQueryBuilder($qb);
     $filter->buildFilter($builder);
     $filters = $builder->getFilters();
     $this->assertCount(1, $filters);
     $this->assertTrue(isset($filters[FilterDecorator::getFilterName($categoryResource)]));
     $filter = $filters[FilterDecorator::getFilterName($categoryResource)];
     $this->assertEquals(['category.id'], $filter->getFields());
 }
 /**
  * @param ApiResource $apiResource
  * @param array $searchParams
  * @param bool $public
  * @return array
  */
 private function getParams(ApiResource $apiResource, $searchParams = [], $public = false)
 {
     if ($parentResource = $apiResource->getParentResource()) {
         $key = $public ? $apiResource->getAssocParent() : FilterDecorator::getFilterName($parentResource);
         $searchParams[$key] = $parentResource->getIdentifierValue();
         $searchParams = array_merge($searchParams, $this->getParams($parentResource, $searchParams, $public));
     }
     return $searchParams;
 }