assertTrue(method_exists(KeyValueExpression::class, '__toString'), 'Class does not have method __toString'); $key = $this->prophesize(Key::class); $key->__toString()->willReturn('foo'); $node = new KeyValueExpression($key->reveal(), 'bar'); $this->assertEquals('', (string) $node); } /** * @dataProvider keyProvider */ public function testQueryBuild($key, $value, $result) { $query_context = $this->prophesize(QueryContext::class); $node = new KeyValueExpression($key, $value); $query = $node->buildQuery($query_context->reveal()); $this->assertEquals(json_decode($result, true), $query); } public function keyProvider() { return [ [NativeKey::database(), 'foo', '{"term":{"databox_name": "foo"}}'], [NativeKey::collection(), 'bar', '{"term":{"collection_name": "bar"}}'], [NativeKey::mediaType(), 'baz', '{"term":{"type": "baz"}}'], [NativeKey::recordIdentifier(), 'qux', '{"term":{"record_id": "qux"}}'], [new MetadataKey('foo'), 'bar', '{"term":{"exif.foo": "bar"}}'], ]; } }