Created
August 16, 2016 07:04
-
-
Save ufuk/6148720cc24ede6c981ddba22c7c1e0a to your computer and use it in GitHub Desktop.
ObjectBuilder & EntityBuilder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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); | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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