public function testQueryBuildOnMultipleFields() { $field_a = $this->prophesize(Field::class); $field_a->getType()->willReturn(Mapping::TYPE_STRING); $field_a->getIndexField(true)->willReturn('foo.raw'); $field_b = $this->prophesize(Field::class); $field_b->getType()->willReturn(Mapping::TYPE_STRING); $field_b->getIndexField(true)->willReturn('bar.raw'); $query_context = $this->prophesize(QueryContext::class); $query_context->getUnrestrictedFields()->willReturn([$field_a->reveal(), $field_b->reveal()]); $query_context->getPrivateFields()->willReturn([]); $node = new RawNode('baz'); $query = $node->buildQuery($query_context->reveal()); $expected = '{ "multi_match": { "query": "baz", "fields": ["foo.raw", "bar.raw"], "analyzer": "keyword" } }'; $this->assertEquals(json_decode($expected, true), $query); }
private function visitToken($token, $value) { switch ($token) { case NodeTypes::TOKEN_WORD: return new AST\TextNode($value); case NodeTypes::TOKEN_QUOTED_STRING: return new AST\QuotedTextNode($value); case NodeTypes::TOKEN_RAW_STRING: return AST\RawNode::createFromEscaped($value); default: // Generic handling off other tokens for unresctricted text return new AST\TextNode($value); } }