package org.xbib.elasticsearch.index.mapper.standardnumber; import org.apache.lucene.index.IndexableField; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.index.mapper.DocumentMapper; import org.elasticsearch.index.mapper.ParseContext; import org.junit.Test; import org.xbib.elasticsearch.MapperTestUtils; import java.io.IOException; import java.io.InputStreamReader; import static org.elasticsearch.common.io.Streams.copyToString; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import static org.junit.Assert.assertEquals; /** */ public class StandardnumberMappingTest { @Test public void testSimpleStandardNumber() throws Exception { String mapping = copyToStringFromClasspath("mapping.json"); DocumentMapper docMapper = MapperTestUtils.newDocumentMapperParser("someIndex").parse("someType", new CompressedXContent(mapping)); String sampleText = "978-3-551-75213-0"; BytesReference json = jsonBuilder().startObject().field("someField", sampleText).endObject().bytes(); ParseContext.Document doc = docMapper.parse("someIndex", "someType", "1", json).rootDoc(); assertEquals(2, doc.getFields("someField").length); assertEquals("978-3-551-75213-0", doc.getFields("someField")[0].stringValue()); assertEquals("9783551752130", doc.getFields("someField")[1].stringValue()); // re-parse it String builtMapping = docMapper.mappingSource().string(); docMapper = MapperTestUtils.newDocumentMapperParser("someIndex").parse("someType", new CompressedXContent(builtMapping)); json = jsonBuilder().startObject().field("someField", sampleText).endObject().bytes(); doc = docMapper.parse("someIndex", "someType", "1", json).rootDoc(); assertEquals(2, doc.getFields("someField").length); assertEquals("978-3-551-75213-0", doc.getFields("someField")[0].stringValue()); assertEquals("9783551752130", doc.getFields("someField")[1].stringValue()); } @Test public void testNonStandardnumber() throws Exception { String mapping = copyToStringFromClasspath("mapping.json"); DocumentMapper docMapper = MapperTestUtils.newDocumentMapperParser("someIndex").parse("someType", new CompressedXContent(mapping)); String sampleText = "Hello world"; BytesReference json = jsonBuilder().startObject().field("someField", sampleText).endObject().bytes(); ParseContext.Document doc = docMapper.parse("someIndex", "someType", "1", json).rootDoc(); assertEquals(0, doc.getFields("someField").length); // re-parse it String builtMapping = docMapper.mappingSource().string(); docMapper = MapperTestUtils.newDocumentMapperParser("someIndex").parse("someType", new CompressedXContent(builtMapping)); json = jsonBuilder().startObject().field("someField", sampleText).endObject().bytes(); doc = docMapper.parse("someIndex", "someType", "1", json).rootDoc(); assertEquals(0, doc.getFields("someField").length); } private String copyToStringFromClasspath(String path) throws IOException { return copyToString(new InputStreamReader(getClass().getResource(path).openStream(), "UTF-8")); } }