package io.ebean.bean;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.tests.model.basic.Customer;
import org.tests.model.basic.EBasic;
import org.tests.model.basic.ResetBasicData;
import org.junit.Test;
import java.sql.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class EntityBeanInterceptTest extends BaseTestCase {
@Test
public void testHasDirtyProperty() throws Exception {
ResetBasicData.reset();
List<Customer> list = Ebean.find(Customer.class).findList();
Set<String> propertyNames = new HashSet<>();
propertyNames.add("name");
propertyNames.add("status");
Customer customer = list.get(0);
EntityBeanIntercept ebi = ((EntityBean) customer)._ebean_getIntercept();
assertFalse(ebi.hasDirtyProperty(propertyNames));
customer.setAnniversary(new Date(System.currentTimeMillis()));
assertFalse(ebi.hasDirtyProperty(propertyNames));
customer.setStatus(Customer.Status.ACTIVE);
assertTrue(ebi.hasDirtyProperty(propertyNames));
}
@Test
public void isPartial_when_new() {
EBasic basic = new EBasic();
EntityBeanIntercept ebi = ((EntityBean) basic)._ebean_getIntercept();
assertThat(ebi.isPartial()).isTrue();
}
@Test
public void isPartial_when_partial() {
EBasic basic = new EBasic();
basic.setId(42);
basic.setName("some");
EntityBeanIntercept ebi = ((EntityBean) basic)._ebean_getIntercept();
assertThat(ebi.isPartial()).isTrue();
}
@Test
public void isPartial_when_full() {
EBasic basic = new EBasic();
basic.setId(42);
basic.setName("some");
basic.setDescription("asd");
basic.setSomeDate(null);
basic.setStatus(EBasic.Status.ACTIVE);
EntityBeanIntercept ebi = ((EntityBean) basic)._ebean_getIntercept();
assertThat(ebi.isPartial()).isFalse();
}
}