package org.tests.el; import io.ebean.Ebean; import io.ebean.bean.EntityBean; import io.ebean.plugin.BeanType; import io.ebean.plugin.ExpressionPath; import io.ebean.plugin.SpiServer; import org.tests.model.basic.Address; import org.tests.model.basic.Country; import org.tests.model.basic.Customer; import org.junit.Test; import static org.junit.Assert.assertEquals; public class TestPathExpression { final BeanType<Customer> beanType; final ExpressionPath billingId; final ExpressionPath line1; final ExpressionPath city; public TestPathExpression() { SpiServer server = Ebean.getDefaultServer().getPluginApi(); beanType = server.getBeanType(Customer.class); billingId = beanType.getExpressionPath("billingAddress.id"); line1 = beanType.getExpressionPath("billingAddress.line1"); city = beanType.getExpressionPath("billingAddress.city"); } @Test public void pathSet() { Customer c1 = new Customer(); line1.pathSet(c1, "12 someplace"); city.pathSet(c1, "Auckland"); billingId.pathSet(c1, 4); beanType.getExpressionPath("id").pathSet(c1, 42L); beanType.getExpressionPath("name").pathSet(c1, "jimmy"); beanType.getExpressionPath("status").pathSet(c1, "ACTIVE"); beanType.getExpressionPath("billingAddress.country.code").pathSet(c1, "NZ"); beanType.getExpressionPath("billingAddress.country.name").pathSet(c1, "New Zealand"); assertEquals(c1.getId(), Integer.valueOf(42)); assertEquals(c1.getName(), "jimmy"); assertEquals(c1.getStatus(), Customer.Status.ACTIVE); assertEquals(c1.getBillingAddress().getLine1(), "12 someplace"); assertEquals(c1.getBillingAddress().getCity(), "Auckland"); assertEquals(c1.getBillingAddress().getId(), Short.valueOf("4")); assertEquals(c1.getBillingAddress().getCountry().getCode(), "NZ"); assertEquals(c1.getBillingAddress().getCountry().getName(), "New Zealand"); } @Test public void pathGet() { Address billingAddress = new Address(); billingAddress.setId((short) 12); billingAddress.setLine1("line1"); billingAddress.setCity("Auckland"); Country nz = new Country(); nz.setCode("NZ"); nz.setName("New Zealand"); billingAddress.setCountry(nz); Customer c0 = new Customer(); c0.setBillingAddress(billingAddress); EntityBean e0 = (EntityBean) c0; assertEquals(line1.pathGet(e0), "line1"); assertEquals(city.pathGet(e0), "Auckland"); assertEquals(billingId.pathGet(e0), Short.valueOf("12")); assertEquals(beanType.getExpressionPath("billingAddress.country.code").pathGet(e0), "NZ"); assertEquals(beanType.getExpressionPath("billingAddress.country.name").pathGet(e0), "New Zealand"); } }