_parser = new Solarium_Client_ResponseParser_Select_Component_FacetSet; $this->_facetSet = new Solarium_Query_Select_Component_FacetSet(); $this->_facetSet->createFacet('field', array('key' => 'keyA', 'field' => 'fieldA')); $this->_facetSet->createFacet('query', array('key' => 'keyB')); $this->_facetSet->createFacet('multiquery', array('key' => 'keyC', 'query' => array('keyC_A' => array('query' => 'id:1'), 'keyC_B' => array('query' => 'id:2')))); $this->_facetSet->createFacet('range', array('key' => 'keyD')); } public function testParse() { $data = array( 'facet_counts' => array( 'facet_fields' => array( 'keyA' => array( 'value1', 12, 'value2', 3, ), ), 'facet_queries' => array( 'keyB' => 23, 'keyC_A' => 25, 'keyC_B' => 16, ), 'facet_ranges' => array( 'keyD' => array( 'before' => 3, 'after' => 5, 'between' => 4, 'counts' => array( '1.0', 1, '101.0', 2, '201.0', 1, ) ) ) ) ); $result = $this->_parser->parse(null, $this->_facetSet, $data); $facets = $result->getFacets(); $this->assertEquals(array('keyA','keyB','keyC','keyD'), array_keys($facets)); $this->assertEquals( array('value1' => 12, 'value2' => 3), $facets['keyA']->getValues() ); $this->assertEquals( 23, $facets['keyB']->getValue() ); $this->assertEquals( array('keyC_A' => 25, 'keyC_B' => 16), $facets['keyC']->getValues() ); $this->assertEquals( array('1.0' => 1, '101.0' => 2, '201.0' => 1), $facets['keyD']->getValues() ); $this->assertEquals( 3, $facets['keyD']->getBefore() ); $this->assertEquals( 4, $facets['keyD']->getBetween() ); $this->assertEquals( 5, $facets['keyD']->getAfter() ); } public function testParseNoData() { $result = $this->_parser->parse(null, $this->_facetSet, array()); $this->assertEquals(array(), $result->getFacets()); } public function testInvalidFacetType() { $facetStub = $this->getMock('Solarium_Query_Select_Component_Facet_Field'); $facetStub->expects($this->once()) ->method('getType') ->will($this->returnValue('invalidfacettype')); $facetStub->expects($this->any()) ->method('getKey') ->will($this->returnValue('facetkey')); $this->_facetSet->addFacet($facetStub); $this->setExpectedException('Solarium_Exception'); $this->_parser->parse(null, $this->_facetSet, array()); } }