diff options
Diffstat (limited to 'container-search/src/test/java')
-rw-r--r-- | container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java index 290b7266a3a..2a399ac0e7b 100644 --- a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java @@ -1259,6 +1259,54 @@ public class JsonRendererTestCase { assertEqualJson(expected, summary); } + private static SlimeAdapter dataFromSimplified(String simplified) { + var decoder = new com.yahoo.slime.JsonDecoder(); + var slime = decoder.decode(new Slime(), Utf8.toBytes(simplified)); + return new SlimeAdapter(slime.get()); + } + + @Test + public void testMapDeepInFields() throws IOException, InterruptedException, ExecutionException { + Result r = new Result(new Query("/?renderer.json.jsonMaps=true")); + var expected = dataFromSimplified( + "{root: { id:'toplevel', relevance:1.0, fields: { totalCount: 1 }," + + " children: [ { id: 'myHitName', relevance: 1.0," + + " fields: { " + + " f1: [ 'v1', { mykey1: 'myvalue1', mykey2: 'myvalue2' } ]," + + " f2: { i1: 'v2', i2: { mykey3: 'myvalue3' }, i3: 'v3' }," + + " f3: { j1: 42, j2: 17.75, j3: [ 'v4', 'v5' ] }," + + " f4: { mykey4: 'myvalue4', mykey5: 'myvalue5' }" + + " }" + + " } ]" + + "}}"); + Hit h = new Hit("myHitName"); + h.setField("f1", dataFromSimplified("[ 'v1', [ { key: 'mykey1', value: 'myvalue1' }, { key: 'mykey2', value: 'myvalue2' } ] ]")); + h.setField("f2", dataFromSimplified("{ i1: 'v2', i2: [ { key: 'mykey3', value: 'myvalue3' } ], i3: 'v3' }")); + h.setField("f3", dataFromSimplified("{ j1: 42, j2: 17.75, j3: [ 'v4', 'v5' ] }")); + h.setField("f4", dataFromSimplified("[ { key: 'mykey4', value: 'myvalue4' }, { key: 'mykey5', value: 'myvalue5' } ]")); + r.hits().add(h); + r.setTotalHitCount(1L); + String summary = render(r); + assertEqualJson(expected.toString(), summary); + + r = new Result(new Query("/?renderer.json.jsonMaps=false")); + expected = dataFromSimplified( + "{root:{id:'toplevel',relevance:1.0,fields:{totalCount:1}," + + " children: [ { id: 'myHitName', relevance: 1.0," + + " fields: { " + + " f1: [ 'v1', [ { key: 'mykey1', value: 'myvalue1' }, { key: 'mykey2', value: 'myvalue2' } ] ]," + + " f2: { i1: 'v2', i2: [ { key: 'mykey3', value: 'myvalue3' } ], i3: 'v3' }," + + " f3: { j1: 42, j2: 17.75, j3: [ 'v4', 'v5' ] }," + + " f4: { mykey4: 'myvalue4', mykey5: 'myvalue5' }" + + " }" + + " } ]" + + "}}"); + r.hits().add(h); + r.setTotalHitCount(1L); + summary = render(r); + assertEqualJson(expected.toString(), summary); + } + @Test public void testThatTheJsonValidatorCanCatchErrors() { String json = "{" |