Package com.avaje.tests.basic

Source Code of com.avaje.tests.basic.TestSharedInstancePropagation

package com.avaje.tests.basic;

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.bean.BeanCollection;
import com.avaje.tests.model.basic.Order;
import com.avaje.tests.model.basic.OrderDetail;
import com.avaje.tests.model.basic.Product;
import com.avaje.tests.model.basic.ResetBasicData;

public class TestSharedInstancePropagation extends BaseTestCase {

 
  /**
   * Test that the sharedInstance status is propagated on lazy loading.
   */
  @Test
  public void testSharedListNavigate() {

    ResetBasicData.reset();
   
    Ebean.getServerCacheManager().clearAll();

    Order order = Ebean.find(Order.class)
      .setAutofetch(false)
      .setUseCache(true)
      .setReadOnly(true)
      .setId(1)
      .findUnique();
     
   
    Assert.assertNotNull(order);
    Assert.assertTrue(Ebean.getBeanState(order).isReadOnly());
   
    List<OrderDetail> details = order.getDetails();
    BeanCollection<?> bc = (BeanCollection<?>)details;
    Assert.assertTrue(bc.isReadOnly());
    Assert.assertFalse(bc.isPopulated());
   
    // lazy load
    bc.size();
   
    Assert.assertTrue(bc.isPopulated());
    Assert.assertTrue(bc.size() > 0);
    OrderDetail detail = details.get(0);
   
    Assert.assertTrue(Ebean.getBeanState(detail).isReadOnly());
    Assert.assertFalse(Ebean.getBeanState(detail).isReference());
   
    Product product = detail.getProduct();

    Assert.assertTrue(Ebean.getBeanState(product).isReadOnly());
   
    // lazy load
    product.getName();
    Assert.assertFalse(Ebean.getBeanState(product).isReference());
   
  }
}
TOP

Related Classes of com.avaje.tests.basic.TestSharedInstancePropagation

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.