/**
  * Tests cardinality aggregation using script instead of field.
  */
 public function testCardinalityWithScript()
 {
     $repository = $this->getManager()->getRepository('AcmeTestBundle:Product');
     $aggregation = new CardinalityAggregation('foo');
     $aggregation->setScript("doc['product.price'].value + ' ' + doc['product.title'].value");
     $search = $repository->createSearch()->addAggregation($aggregation);
     $result = $repository->execute($search)->getAggregations()->find('foo');
     $this->assertEquals(2, $result->getValue()['value']);
 }
 /**
  * Tests getArray method.
  */
 public function testGetArray()
 {
     $aggregation = new CardinalityAggregation('bar');
     $aggregation->setScript('foo');
     $result = $aggregation->getArray();
     $this->assertArrayHasKey('script', $result, 'key=script when script is set');
     $this->assertEquals('foo', $result['script'], 'script=foo when scripts name=foo');
     $aggregation->setField('foo');
     $result = $aggregation->getArray();
     $this->assertArrayHasKey('field', $result, 'key=field when field is set');
     $this->assertEquals('foo', $result['field'], 'field=foo when fields name=foo');
     $aggregation->setPrecisionThreshold(10);
     $result = $aggregation->getArray();
     $this->assertArrayHasKey('precision_threshold', $result, 'key=precision_threshold when is set');
     $this->assertEquals(10, $result['precision_threshold'], 'precision_threshold=10 when is set');
     $aggregation->setRehash(true);
     $result = $aggregation->getArray();
     $this->assertArrayHasKey('rehash', $result, 'key=rehash when rehash is set');
     $this->assertEquals(true, $result['rehash'], 'rehash=true when rehash is set to true');
 }