package org.tests.ddd.iud;
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 io.ebean.text.json.JsonContext;
import org.tests.model.ddd.DPerson;
import org.tests.model.ivo.Money;
import org.junit.Test;
import java.io.IOException;
import java.util.Currency;
import static org.junit.Assert.*;
public class TestDPersonEl {
@Test
public void test() throws IOException {
Currency NZD = Currency.getInstance("NZD");
DPerson p = new DPerson();
p.setFirstName("first");
p.setLastName("last");
p.setSalary(new Money("12200"));
Ebean.save(p);
SpiServer server = Ebean.getDefaultServer().getPluginApi();
BeanType<DPerson> descriptor = server.getBeanType(DPerson.class);
JsonContext jsonContext = server.json();
String json = jsonContext.toJson(p);
DPerson bean = jsonContext.toBean(DPerson.class, json);
assertEquals("first", bean.getFirstName());
assertEquals(new Money("12200"), bean.getSalary());
EntityBean entityBean = (EntityBean) p;
ExpressionPath elSalary = descriptor.getExpressionPath("salary");
Object money = elSalary.pathGet(entityBean);
assertNotNull(money);
assertEquals(new Money("12200"), money);
}
}