/**
  * {@inheritdoc}
  */
 public function normalize(NormalizerInterface $normalizer, $format = null, array $context = [])
 {
     if (!$this->filtersSet && $this->hasReference('filter_query')) {
         /** @var BuilderInterface $filter */
         $filter = $this->getReference('filter_query');
         $this->addToBool($filter, BoolQuery::FILTER);
         $this->filtersSet = true;
     }
     if (!$this->bool) {
         return null;
     }
     return $this->bool->toArray();
 }
 /**
  * {@inheritdoc}
  */
 public function normalize(NormalizerInterface $normalizer, $format = null, array $context = [])
 {
     if ($this->hasReference('filtered_query')) {
         /** @var FilteredQuery $filteredQuery */
         $filteredQuery = $this->getReference('filtered_query');
         $this->add($filteredQuery);
     }
     if (!$this->bool) {
         return null;
     }
     $queryArray = $this->bool->toArray();
     if ($this->bool->isRelevant()) {
         $queryArray = [$this->bool->getType() => $queryArray];
     }
     return $queryArray;
 }
 /**
  * Test if simplified structure is returned in case single MUST query given.
  */
 public function testSingleMust()
 {
     $bool = new BoolQuery();
     $bool->add(new TermQuery('key2', 'value2'), BoolQuery::MUST);
     $expected = ['term' => ['key2' => 'value2']];
     $this->assertEquals($expected, $bool->toArray());
 }
 /**
  * Tests toArray() method.
  */
 public function testBoolToArray()
 {
     $bool = new BoolQuery();
     $bool->add(new TermQuery('key1', 'value1'), BoolQuery::SHOULD);
     $bool->add(new TermQuery('key2', 'value2'), BoolQuery::MUST);
     $bool->add(new TermQuery('key3', 'value3'), BoolQuery::MUST_NOT);
     $expected = ['should' => [['term' => ['key1' => 'value1']]], 'must' => [['term' => ['key2' => 'value2']]], 'must_not' => [['term' => ['key3' => 'value3']]]];
     $this->assertEquals($expected, $bool->toArray());
 }