package org.tests.compositekeys;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.PagedList;
import io.ebean.Query;
import org.tests.model.basic.CKeyAssoc;
import org.tests.model.basic.CKeyDetail;
import org.tests.model.basic.CKeyParent;
import org.tests.model.basic.CKeyParentId;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class TestCKeyLazyLoad extends BaseTestCase {
@Test
public void test() {
Ebean.deleteAll(Ebean.find(CKeyDetail.class).findList());
Ebean.deleteAll(Ebean.find(CKeyParent.class).findList());
Ebean.deleteAll(Ebean.find(CKeyAssoc.class).findList());
CKeyParentId id = new CKeyParentId(1, "one");
CKeyAssoc assoc = new CKeyAssoc();
assoc.setAssocOne("assocOne");
CKeyParent p = new CKeyParent();
p.setId(id);
p.setName("testone");
p.setAssoc(assoc);
p.add(new CKeyDetail("somethine one"));
p.add(new CKeyDetail("somethine two"));
Ebean.save(p);
CKeyAssoc assoc2 = new CKeyAssoc();
assoc2.setAssocOne("assocTwo");
CKeyParentId id2 = new CKeyParentId(2, "two");
CKeyParent p2 = new CKeyParent();
p2.setId(id2);
p2.setName("testone");
p2.setAssoc(assoc2);
p2.add(new CKeyDetail("somethine one"));
p2.add(new CKeyDetail("somethine two"));
Ebean.save(p2);
exerciseMaxRowsQuery_with_embeddedId();
CKeyParentId searchId = new CKeyParentId(1, "one");
CKeyParent found = Ebean.find(CKeyParent.class).where().idEq(searchId).findUnique();
Assert.assertNotNull(found);
Assert.assertEquals(2, found.getDetails().size());
List<CKeyParent> list = Ebean.find(CKeyParent.class).findList();
Assert.assertTrue(list.size() > 1);
CKeyParent foundFirst = list.get(0);
List<CKeyDetail> details = foundFirst.getDetails();
int size = details.size();
Assert.assertTrue(size > 0);
List<Object> idList = new ArrayList<>();
idList.add(id);
idList.add(id2);
Query<CKeyParent> queryIdIn = Ebean.find(CKeyParent.class).where().idIn(idList).query();
List<CKeyParent> idInTestList = queryIdIn.findList();
Assert.assertTrue(idInTestList.size() == 2);
}
/**
* Exercise paging/maxRows type query with EmbeddedId.
*/
private void exerciseMaxRowsQuery_with_embeddedId() {
PagedList<CKeyParent> siteUserPage = Ebean.find(CKeyParent.class).where()
.orderBy("name asc")
.setMaxRows(10)
.findPagedList();
siteUserPage.getList();
}
}