/**
  * {@inheritdoc}
  */
 public function execute($cacheResult = false)
 {
     $queryHash = md5(json_encode($this->queryBuilder->getRequest()));
     if ($cacheResult === true && isset(self::$runtimeQueryResultCache[$queryHash])) {
         return self::$runtimeQueryResultCache[$queryHash];
     }
     $queryResult = new ElasticSearchQueryResult($this);
     self::$runtimeQueryResultCache[$queryHash] = $queryResult;
     return $queryResult;
 }
 /**
  * @test
  * @dataProvider rangeConstraintExamples
  */
 public function rangeConstraintsWork($constraint, $operator, $value)
 {
     $this->queryBuilder->{$constraint}('fieldName', $value);
     $expected = array('range' => array('fieldName' => array($operator => $value)));
     $actual = $this->queryBuilder->getRequest();
     $this->assertInArray($expected, $actual['query']['filtered']['filter']['bool']['must']);
 }
 /**
  * @test
  */
 public function aCustomAggregationDefinitionCanBeApplied()
 {
     $expected = ["foo" => ["some" => ["field" => "bar"], "custom" => ["field" => "bar"], "arrays" => ["field" => "bar"]]];
     $this->queryBuilder->aggregation("foo", $expected['foo']);
     $actual = $this->queryBuilder->getRequest();
     $this->assertInArray($expected, $actual);
 }