/**
  * List children categories
  *
  * @param Request $request    The request object
  * @param int     $identifier The parent category identifier
  *
  * @return array
  */
 public function listSelectedChildrenAction(Request $request, $identifier)
 {
     $parent = $this->repository->findOneByIdentifier($identifier);
     if (null === $parent) {
         return new JsonResponse(null, 404);
     }
     $selectedCategories = $this->repository->getCategoriesByCodes($request->get('selected', []));
     if (0 !== $selectedCategories->count()) {
         $tree = $this->twigExtension->listCategoriesResponse($this->repository->getFilledTree($parent, $selectedCategories), $selectedCategories);
     } else {
         $tree = $this->twigExtension->listCategoriesResponse($this->repository->getFilledTree($parent, new ArrayCollection([$parent])), new ArrayCollection());
     }
     // Returns only children of the given category without the node itself
     if (!empty($tree)) {
         $tree = $tree[0]['children'];
     }
     return new JsonResponse($tree);
 }
 /**
  * Test related method
  *
  * @param array   $trees
  * @param integer $selectedTreeId
  * @param boolean $resultCount
  * @param array   $expectedResult
  *
  * @dataProvider dataProviderListTrees
  */
 public function testListTreesResponse(array $trees, $selectedTreeId, $resultCount, $expectedResult)
 {
     $this->productManager->expects($this->any())->method('getProductsCountInCategory')->will($this->returnValue($resultCount));
     $treeEntities = array();
     foreach ($trees as $tree) {
         $treeEntities[] = $this->getCategoryMock($tree);
     }
     $result = $this->categoryExtension->listTreesResponse($treeEntities, $selectedTreeId);
     $this->assertSame($expectedResult, $result);
 }