package io.ebeaninternal.server.text.json; import io.ebean.FetchPath; import io.ebean.config.JsonConfig; import io.ebean.text.PathProperties; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; import org.junit.Test; import java.io.IOException; import java.io.StringWriter; import static org.junit.Assert.assertTrue; public class WriteJsonTest { @Test public void test_push() throws IOException { JsonFactory jsonFactory = new JsonFactory(); JsonGenerator generator = jsonFactory.createGenerator(new StringWriter()); FetchPath fetchPath = PathProperties.parse("id,status,name,customer(id,name,address(street,city)),orders(qty,product(sku,prodName))"); WriteJson writeJson = new WriteJson(null, generator, fetchPath, null, null, JsonConfig.Include.ALL); WriteJson.WriteBean rootLevel = writeJson.createWriteBean(null, null); assertTrue(rootLevel.currentIncludeProps.contains("id")); assertTrue(rootLevel.currentIncludeProps.contains("status")); assertTrue(rootLevel.currentIncludeProps.contains("name")); assertTrue(rootLevel.currentIncludeProps.contains("customer")); writeJson.beginAssocOne("customer", null); WriteJson.WriteBean customerLevel = writeJson.createWriteBean(null, null); assertTrue(customerLevel.currentIncludeProps.contains("id")); assertTrue(customerLevel.currentIncludeProps.contains("name")); assertTrue(customerLevel.currentIncludeProps.contains("address")); writeJson.beginAssocOne("address", null); WriteJson.WriteBean addressLevel = writeJson.createWriteBean(null, null); assertTrue(addressLevel.currentIncludeProps.contains("street")); assertTrue(addressLevel.currentIncludeProps.contains("city")); writeJson.endAssocOne(); writeJson.endAssocOne(); writeJson.beginAssocMany("orders"); WriteJson.WriteBean orderLevel = writeJson.createWriteBean(null, null); assertTrue(orderLevel.currentIncludeProps.contains("qty")); assertTrue(orderLevel.currentIncludeProps.contains("product")); writeJson.beginAssocOne("product", null); WriteJson.WriteBean productLevel = writeJson.createWriteBean(null, null); assertTrue(productLevel.currentIncludeProps.contains("sku")); assertTrue(productLevel.currentIncludeProps.contains("prodName")); writeJson.endAssocOne(); writeJson.endAssocMany(); } }