/**
  * @param ProductSearchCriteria $criteria
  *
  * @return $this
  */
 public function fetchProductSearch(ProductSearchCriteria $criteria)
 {
     $this->checkBasketId($criteria->getSessionId());
     $this->query[] = array('product_search' => $criteria->toArray());
     return $this;
 }
 public function testFilterByProductFacets()
 {
     $criteria = ProductSearchCriteria::create('12345')->filterByProductFacetIds(array(0 => array(264)));
     $this->assertEquals('{"session_id":"12345","filter":{"product_facets":{"0":[264]}}}', json_encode($criteria->toArray()));
     $criteria->filterByProductFacetIds(array(443 => array(18405)));
     $this->assertEquals('{"session_id":"12345","filter":{"product_facets":{"443":[18405]}}}', json_encode($criteria->toArray()));
     $criteria->filterByProductFacetIds(array(443 => array(18406)), true);
     $this->assertEquals('{"session_id":"12345","filter":{"product_facets":{"443":[18405,18406]}}}', json_encode($criteria->toArray()));
     $criteria->filterByProductFacetIds(array(0 => array(264)), true);
     $this->assertEquals('{"session_id":"12345","filter":{"product_facets":{"443":[18405,18406],"0":[264]}}}', json_encode($criteria->toArray()));
     $criteria->filterByProductFacetIds(array(0 => array(789, 123)), true);
     $criteria->filterByProductFacetIds(array(0 => array(789)), true);
     $this->assertEquals('{"session_id":"12345","filter":{"product_facets":{"443":[18405,18406],"0":[264,789,123]}}}', json_encode($criteria->toArray()));
 }