Package com.avaje.tests.cache

Source Code of com.avaje.tests.cache.TestCacheDelete

package com.avaje.tests.cache;

import org.junit.Assert;
import org.junit.Test;

import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.Ebean;
import com.avaje.tests.model.basic.OCachedBean;
import com.avaje.tests.model.basic.OCachedBeanChild;

/**
* Test class testing deleting/invalidating of cached beans
*/
public class TestCacheDelete extends BaseTestCase {

    /**
     * When deleting a cached entity all entities with a referenced OneToMany relation must also be invalidated!
     */
    @Test
    public void testCacheDeleteOneToMany() {
        // arrange
        OCachedBeanChild child = new OCachedBeanChild();
        OCachedBeanChild child2 = new OCachedBeanChild();

        OCachedBean parentBean = new OCachedBean();
        parentBean.getChildren().add(child);
        parentBean.getChildren().add(child2);
        Ebean.save(parentBean);

        // confirm there are 2 children loaded from the parent
        Assert.assertEquals(2, Ebean.find(OCachedBean.class, parentBean.getId()).getChildren().size());

        // ensure cache has been populated
        Ebean.find(OCachedBeanChild.class, child.getId());
        child2 = Ebean.find(OCachedBeanChild.class, child2.getId());
        parentBean = Ebean.find(OCachedBean.class, parentBean.getId());

        // act
        Ebean.delete(child2);

        // assert
        OCachedBean beanFromCache = Ebean.find(OCachedBean.class, parentBean.getId());
        Assert.assertEquals(1, beanFromCache.getChildren().size());
    }
}
TOP

Related Classes of com.avaje.tests.cache.TestCacheDelete

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.