package org.tests.types;
import io.ebean.BaseTestCase;
import io.ebean.BeanState;
import io.ebean.Ebean;
import org.tests.model.types.SomeFileBean;
import org.junit.Test;
import java.io.File;
import java.net.URL;
import java.util.Set;
import static org.junit.Assert.*;
public class TestFileTypeFetching extends BaseTestCase {
File file = getFile("/profile-image.jpg");
File file2 = getFile("/java-64.png");
@Test
public void test_lazyFetch_statelessUpdate() {
assertTrue(file.exists());
SomeFileBean bean0 = new SomeFileBean();
bean0.setName("one");
bean0.setContent(file);
Ebean.save(bean0);
SomeFileBean bean1 = Ebean.find(SomeFileBean.class)
.setId(bean0.getId())
.findUnique();
BeanState beanState = Ebean.getBeanState(bean1);
Set<String> loadedProps = beanState.getLoadedProps();
assertTrue(loadedProps.contains("name"));
assertFalse(loadedProps.contains("content"));
File file1 = bean1.getContent();
assertEquals(file.length(), file1.length());
SomeFileBean statelessUpdateBean = new SomeFileBean();
statelessUpdateBean.setId(bean0.getId());
statelessUpdateBean.setContent(file2);
// perform stateless update (handy)
Ebean.update(statelessUpdateBean);
SomeFileBean bean2 = Ebean.find(SomeFileBean.class)
.select("file")
.setId(bean0.getId())
.findUnique();
assertEquals(file2.length(), bean2.getContent().length());
Ebean.delete(bean1);
}
private File getFile(String resource) {
URL url = getClass().getResource(resource);
return new File(url.getFile());
}
}