package io.ebeaninternal.server.text.json;
import io.ebean.Ebean;
import io.ebean.bean.EntityBean;
import io.ebeaninternal.api.SpiEbeanServer;
import io.ebeaninternal.server.deploy.BeanDescriptor;
import org.tests.model.basic.Customer;
import org.tests.model.basic.ResetBasicData;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import org.junit.Test;
import java.io.IOException;
import java.io.StringWriter;
import java.sql.Date;
import java.util.List;
import static org.junit.Assert.assertTrue;
public class WriteJsonDirtyTest {
@Test
public void test() throws IOException {
ResetBasicData.reset();
List<Customer> customers = Ebean.find(Customer.class).findList();
Customer customer = Ebean.find(Customer.class).setId(customers.get(0).getId())
.setUseCache(false)
.findOne();
SpiEbeanServer server = (SpiEbeanServer) Ebean.getServer(null);
BeanDescriptor<Customer> descriptor = server.getBeanDescriptor(Customer.class);
customer.setName("dirtyCustName");
customer.setAnniversary(new Date(System.currentTimeMillis()));
EntityBean entityBean = (EntityBean) customer;
boolean[] dirtyProperties = entityBean._ebean_getIntercept().getDirtyProperties();
StringWriter writer = new StringWriter();
JsonFactory jsonFactory = new JsonFactory();
JsonGenerator generator = jsonFactory.createGenerator(writer);
WriteJson writeJson = new WriteJson(server, generator, null, null, null, null);
descriptor.jsonWriteDirty(writeJson, entityBean, dirtyProperties);
generator.flush();
generator.close();
String jsonContent = writer.toString();
assertTrue(jsonContent.contains("\"name\":"));
assertTrue(jsonContent.contains("\"anniversary\":"));
}
}