package io.ebeaninternal.server.deploy; import io.ebean.BaseTestCase; import io.ebeanservice.docstore.api.mapping.DocPropertyAdapter; import io.ebeanservice.docstore.api.mapping.DocPropertyMapping; import io.ebeanservice.docstore.api.mapping.DocumentMapping; import org.tests.model.basic.Order; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; public class BeanDescriptor_documentMappingTest extends BaseTestCase { @Test public void docMapping() { BeanDescriptor<Order> desc = getBeanDescriptor(Order.class); DocumentMapping documentMapping = desc.getDocMapping(); DocPropertyMapping properties = documentMapping.getProperties(); assertThat(properties).isNotNull(); } @Test public void docMapping_visitor() { BeanDescriptor<Order> desc = getBeanDescriptor(Order.class); DocumentMapping documentMapping = desc.getDocMapping(); DocPropertyMapping properties = documentMapping.getProperties(); assertThat(properties).isNotNull(); TDVisitor tdVisitor = new TDVisitor(); documentMapping.visit(tdVisitor); assertThat(tdVisitor.sb.toString()).isEqualTo("{status,orderDate,shipDate, object{customer:id,name,}customerName, nested{details: [id,orderQty,shipQty,unitPrice,cretime,updtime,]}cretime,updtime,}"); } class TDVisitor extends DocPropertyAdapter { StringBuilder sb = new StringBuilder(); @Override public void visitProperty(DocPropertyMapping property) { sb.append(property.getName() + ","); } @Override public void visitBegin() { sb.append("{"); } @Override public void visitEnd() { sb.append("}"); } @Override public void visitBeginObject(DocPropertyMapping property) { sb.append(" object{" + property.getName() + ":"); } @Override public void visitEndObject(DocPropertyMapping property) { sb.append("}"); } @Override public void visitBeginList(DocPropertyMapping property) { sb.append(" nested{" + property.getName() + ": ["); } @Override public void visitEndList(DocPropertyMapping property) { sb.append("]}"); } } }