mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#919 - io.ebean package initial
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
package org.tests.query.embedded;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.EbeanServer;
|
||||
import io.ebean.cache.ServerCache;
|
||||
import io.ebean.cache.ServerCacheManager;
|
||||
import io.ebean.cache.ServerCacheStatistics;
|
||||
import org.tests.model.embedded.EAddress;
|
||||
import org.tests.model.embedded.EInvoice;
|
||||
import org.tests.model.embedded.EInvoice.State;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
public class TestMultipleEmbeddedLoading extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testSimpleCase() {
|
||||
|
||||
// prepare test
|
||||
EAddress ship = new EAddress();
|
||||
ship.setStreet("1 Banana St");
|
||||
ship.setSuburb("Suburb");
|
||||
ship.setCity("Auckland");
|
||||
|
||||
EAddress bill = new EAddress();
|
||||
bill.setStreet("2 Apple St");
|
||||
bill.setSuburb("Suburb");
|
||||
bill.setCity("Auckland");
|
||||
|
||||
EInvoice invoice = new EInvoice();
|
||||
invoice.setInvoiceDate(new Date(System.currentTimeMillis()));
|
||||
invoice.setState(State.New);
|
||||
invoice.setShipAddress(ship);
|
||||
invoice.setBillAddress(bill);
|
||||
|
||||
// act: save and fetch
|
||||
Ebean.save(invoice);
|
||||
|
||||
EInvoice invoice2 = Ebean.find(EInvoice.class, invoice.getId());
|
||||
|
||||
// assert fetched bean populated as expected
|
||||
assertEquals(invoice.getId(), invoice2.getId());
|
||||
assertEquals(invoice.getState(), invoice2.getState());
|
||||
assertEquals(invoice.getInvoiceDate(), invoice2.getInvoiceDate());
|
||||
assertEquals("2 Apple St", invoice.getBillAddress().getStreet());
|
||||
assertEquals("2 Apple St", invoice2.getBillAddress().getStreet());
|
||||
|
||||
// act: only update one of the embedded fields
|
||||
invoice2.getBillAddress().setStreet("3 Pineapple St");
|
||||
// bean should be dirty
|
||||
Ebean.save(invoice2);
|
||||
|
||||
awaitL2Cache();
|
||||
|
||||
EInvoice invoice3 = Ebean.find(EInvoice.class, invoice.getId());
|
||||
|
||||
// assert field has updated value
|
||||
assertEquals("3 Pineapple St", invoice3.getBillAddress().getStreet());
|
||||
|
||||
|
||||
// fetch a partial
|
||||
EInvoice invoicePartial = Ebean.find(EInvoice.class)
|
||||
.select("state, date")
|
||||
.where().idEq(invoice.getId())
|
||||
.findUnique();
|
||||
|
||||
// lazy load of embedded bean
|
||||
EAddress billAddress = invoicePartial.getBillAddress();
|
||||
|
||||
assertNotNull(billAddress);
|
||||
assertEquals("3 Pineapple St", billAddress.getStreet());
|
||||
|
||||
EbeanServer server = Ebean.getServer(null);
|
||||
ServerCacheManager serverCacheManager = server.getServerCacheManager();
|
||||
|
||||
// get cache, clear the cache and statistics
|
||||
ServerCache beanCache = serverCacheManager.getBeanCache(EInvoice.class);
|
||||
beanCache.clear();
|
||||
beanCache.getStatistics(true);
|
||||
|
||||
// fetch and load the cache
|
||||
EInvoice invoice4 = Ebean.find(EInvoice.class, invoice.getId());
|
||||
assertNotNull(invoice4);
|
||||
|
||||
ServerCacheStatistics statistics = beanCache.getStatistics(false);
|
||||
|
||||
assertEquals(1, statistics.getSize());
|
||||
assertEquals(0, statistics.getHitCount());
|
||||
|
||||
// fetch out of the cache this time
|
||||
EInvoice invoice5 = Ebean.find(EInvoice.class, invoice.getId());
|
||||
assertNotNull(invoice5);
|
||||
|
||||
statistics = beanCache.getStatistics(false);
|
||||
assertEquals(1, statistics.getSize());
|
||||
assertEquals(1, statistics.getHitCount());
|
||||
|
||||
billAddress = invoice5.getBillAddress();
|
||||
|
||||
assertNotNull(billAddress);
|
||||
assertEquals("3 Pineapple St", billAddress.getStreet());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user