Skip to content

Instantly share code, notes, and snippets.

@ufuk
Created August 16, 2016 07:04
Show Gist options
  • Select an option

  • Save ufuk/6148720cc24ede6c981ddba22c7c1e0a to your computer and use it in GitHub Desktop.

Select an option

Save ufuk/6148720cc24ede6c981ddba22c7c1e0a to your computer and use it in GitHub Desktop.
ObjectBuilder & EntityBuilder
import ...BaseEntity;
import org.apache.commons.lang.math.RandomUtils;
import org.hibernate.Session;
public class EntityBuilder<T extends BaseEntity> extends ObjectBuilder<T> {
@Override
public EntityBuilder<T> set(String fieldName, Object value) {
return (EntityBuilder<T>) super.set(fieldName, value);
}
public EntityBuilder<T> id(Long id) {
set("id", id);
return this;
}
public EntityBuilder<T> randomId() {
return id(RandomUtils.nextLong());
}
public EntityBuilder<T> deleted(boolean deleted) {
set("deleted", deleted);
return this;
}
public T save(Session session, Class<T> clazz) {
T instance = build(clazz);
return (T) session.merge(instance);
}
}
import org.springframework.test.util.ReflectionTestUtils;
import java.util.HashMap;
import java.util.Map;
public class ObjectBuilder<T> {
private Map<String, Object> fieldsAndValues = new HashMap<>();
public ObjectBuilder<T> set(String fieldName, Object value) {
fieldsAndValues.put(fieldName, value);
return this;
}
public T build(Class<T> clazz) {
try {
T instance = clazz.newInstance();
for (Map.Entry<String, Object> entry : fieldsAndValues.entrySet()) {
ReflectionTestUtils.setField(instance, entry.getKey(), entry.getValue());
}
return instance;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
public class ObjectBuilderTest {
@Test
public void shouldInitiateAndSetFields() {
TestClass testClass = new ObjectBuilder<TestClass>()
.set("integerField", 471989)
.set("stringField", "Ufuk")
.set("listField", Arrays.asList(10L, 71L))
.build(TestClass.class);
assertThat(testClass.getIntegerField(), equalTo(471989));
assertThat(testClass.getStringField(), equalTo("Ufuk"));
assertThat(testClass.getListField(), equalTo(Arrays.asList(10L, 71L)));
}
static class TestClass {
private int integerField;
private String stringField;
private List<Long> listField;
public int getIntegerField() {
return integerField;
}
public void setIntegerField(int integerField) {
this.integerField = integerField;
}
public String getStringField() {
return stringField;
}
public void setStringField(String stringField) {
this.stringField = stringField;
}
public List<Long> getListField() {
return listField;
}
public void setListField(List<Long> listField) {
this.listField = listField;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment