@Test public void testNestedObjectParsing() throws Exception { Map value = new ObjectMapper().readValue(getClass().getResourceAsStream("nested.json"), Map.class); Field fl = Field.parseField(value); assertEquals("artiststimestamp", fl.name()); Field[] properties = fl.properties(); Field first = properties[0]; assertEquals("date", first.name()); assertEquals(FieldType.DATE, first.type()); Field second = properties[1]; assertEquals(FieldType.OBJECT, second.type()); assertEquals("links", second.name()); Field[] secondProps = second.properties(); assertEquals("url", secondProps[0].name()); assertEquals(FieldType.STRING, secondProps[0].type()); }
@Test public void testFieldInclude() throws Exception { Map value = new ObjectMapper().readValue(getClass().getResourceAsStream("nested.json"), Map.class); Field fl = Field.parseField(value); Field filtered = MappingUtils.filter(fl, Collections.singleton("*a*e"), Collections.<String>emptyList()); assertThat(fl.name(), is(filtered.name())); assertThat(fl.type(), is(filtered.type())); Field[] props = filtered.properties(); assertThat(props.length, is(2)); assertThat(props[0].name(), is("date")); assertThat(props[1].name(), is("name")); }
@Test public void testMultiFieldParsing() throws Exception { Map value = new ObjectMapper().readValue(getClass().getResourceAsStream("multi_field.json"), Map.class); Field fl = Field.parseField(value); assertEquals("tweet", fl.name()); assertEquals(1, fl.properties().length); Field nested = fl.properties()[0]; assertEquals("name", nested.name()); assertEquals(FieldType.STRING, nested.type()); }
@Test(expected = EsHadoopIllegalArgumentException.class) public void testMultiFieldWithoutDefaultFieldAndMultiTypesParsing() throws Exception { Map value = new ObjectMapper() .readValue( getClass().getResourceAsStream("multi_field_no_default_multi_types.json"), Map.class); Field fl = Field.parseField(value); assertEquals("tweet", fl.name()); assertEquals(1, fl.properties().length); Field nested = fl.properties()[0]; assertEquals("name", nested.name()); assertEquals(FieldType.STRING, nested.type()); }