package net.petrikainulainen.spring.datasolr.todo.model;
import org.junit.Test;
import static junit.framework.Assert.*;
/**
* @author Petri Kainulainen
*/
public class TodoTest {
private String TITLE = "title";
private String DESCRIPTION = "description";
@Test
public void build_MandatoryInformationIsSet_ShouldCreateObject() {
Todo built = Todo.getBuilder(TITLE).build();
assertNull(built.getId());
assertNull(built.getCreationTime());
assertNull(built.getDescription());
assertNull(built.getModificationTime());
assertEquals(TITLE, built.getTitle());
assertEquals(0L, built.getVersion());
}
@Test
public void build_AllInformationSet_ShouldCreateObject() {
Todo built = Todo.getBuilder(TITLE)
.description(DESCRIPTION)
.build();
assertNull(built.getId());
assertNull(built.getCreationTime());
assertEquals(DESCRIPTION, built.getDescription());
assertNull(built.getModificationTime());
assertEquals(TITLE, built.getTitle());
assertEquals(0L, built.getVersion());
}
@Test
public void prePersist_NewTodo_ShouldUpdateCreationTimeAndModificationTime() {
Todo todo = new Todo();
todo.prePersist();
assertNull(todo.getId());
assertNotNull(todo.getCreationTime());
assertNull(todo.getDescription());
assertNotNull(todo.getModificationTime());
assertNull(todo.getTitle());
assertEquals(0L, todo.getVersion());
assertEquals(todo.getCreationTime(), todo.getModificationTime());
}
@Test
public void preUpdate_ExistingTodo_ShouldUpdateModificationTime() {
Todo todo = new Todo();
todo.prePersist();
pause(1000);
todo.preUpdate();
assertNull(todo.getId());
assertNotNull(todo.getCreationTime());
assertNull(todo.getDescription());
assertNotNull(todo.getModificationTime());
assertNull(todo.getTitle());
assertEquals(0L, todo.getVersion());
assertTrue(todo.getModificationTime().isAfter(todo.getCreationTime()));
}
private void pause(long timeInMillis) {
try {
Thread.currentThread().sleep(timeInMillis);
}
catch (InterruptedException e) {
//Do Nothing
}
}
}