package com.avaje.tests.text.json; import java.io.IOException; import java.util.List; import org.junit.Assert; import org.junit.Test; import com.avaje.ebean.BaseTestCase; import com.avaje.ebean.Ebean; import com.avaje.ebean.text.PathProperties; import com.avaje.ebean.text.json.JsonContext; import com.avaje.ebean.text.json.JsonWriteOptions; import com.avaje.tests.model.basic.Customer; import com.avaje.tests.model.basic.ResetBasicData; public class TestTextJsonReadManyLazyLoad extends BaseTestCase { @Test public void test_lazyLoadBoth() throws IOException { ResetBasicData.reset(); List list = Ebean.find(Customer.class).select("id, status, shippingAddress").order() .desc("id").findList(); JsonContext json = Ebean.createJsonContext(); // test that lazy loading on PathProperties pp = PathProperties.parse("(id,name,contacts(firstName))"); JsonWriteOptions o = new JsonWriteOptions(); o.setPathProperties(pp); System.out.println("Expect lazy loading of Customer beans and customer contacts"); String s = json.toJsonString(list, o); System.out.println(s); Assert.assertTrue(s.contains("\"contacts\"")); Assert.assertTrue(s.contains("\"name\"")); } @Test public void test_lazyLoadCust() throws IOException { ResetBasicData.reset(); List list = Ebean.find(Customer.class).select("id, status, shippingAddress") .fetch("contacts").order().desc("id").findList(); JsonContext json = Ebean.createJsonContext(); // test that lazy loading on PathProperties pp = PathProperties.parse("(id,name,contacts(firstName))"); JsonWriteOptions o = new JsonWriteOptions(); o.setPathProperties(pp); System.out.println("expecting lazy load of Customer beans to fetch customer name"); String s = json.toJsonString(list, o); System.out.println(s); Assert.assertTrue(s.contains("\"contacts\"")); Assert.assertTrue(s.contains("\"name\"")); } @Test public void test_lazyLoadContacts() throws IOException { ResetBasicData.reset(); List list = Ebean.find(Customer.class).select("id, name, status, shippingAddress") // .fetch("contacts") .order().desc("id").findList(); JsonContext json = Ebean.createJsonContext(); // test that lazy loading on PathProperties pp = PathProperties.parse("(id,name,contacts(firstName))"); JsonWriteOptions o = new JsonWriteOptions(); o.setPathProperties(pp); System.out.println("expecting lazy load of Customer contacts "); String s = json.toJsonString(list, o); System.out.println(s); Assert.assertTrue(s.contains("\"contacts\"")); Assert.assertTrue(s.contains("\"name\"")); } }