package tudu.web.dwr.impl;
import static org.easymock.EasyMock.*;
import org.junit.After;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;
import tudu.domain.model.Todo;
import tudu.domain.model.TodoList;
import tudu.domain.model.User;
import tudu.service.TodosManager;
import tudu.service.UserManager;
import tudu.web.dwr.bean.RemoteTodo;
import tudu.web.dwr.bean.RemoteTodoList;
import java.util.Calendar;
public class TodosDwrImplTest {
Todo todo = new Todo();
User user = new User();
TodosManager todosManager = null;
UserManager userManager = null;
TodosDwrImpl todosDwrImpl = new TodosDwrImplTestable();
@Before
public void before() {
todo.setTodoId("0001");
todo.setDescription("Test description");
todo.setPriority(0);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE, 30);
cal.set(Calendar.MONTH, Calendar.SEPTEMBER);
cal.set(Calendar.YEAR, 2005);
todo.setDueDate(cal.getTime());
todo.setCompleted(false);
TodoList todoList = new TodoList();
todoList.setListId("01");
todo.setTodoList(todoList);
user.setLogin("test_user");
user.setFirstName("First name");
user.setLastName("Last name");
userManager = createMock(UserManager.class);
todosManager = createMock(TodosManager.class);
ReflectionTestUtils.setField(todosDwrImpl, "todosManager", todosManager);
ReflectionTestUtils.setField(todosDwrImpl, "userManager", userManager);
}
@After
public void after() {
verify(todosManager);
verify(userManager);
}
private void replay_() {
replay(todosManager);
replay(userManager);
}
@Test
public void testGetCurrentTodoLists() {
TodoList todoList1 = new TodoList();
todoList1.setListId("001");
todoList1.setName("BBB");
Todo todo1 = new Todo();
todo1.setTodoId("0001");
todo1.setCompleted(false);
todoList1.getTodos().add(todo1);
user.getTodoLists().add(todoList1);
TodoList todoList2 = new TodoList();
todoList2.setListId("002");
todoList2.setName("AAA");
user.getTodoLists().add(todoList2);
TodoList todoList3 = new TodoList();
todoList3.setListId("003");
todoList3.setName("AAA");
Todo todo2 = new Todo();
todo2.setTodoId("0002");
todo2.setCompleted(false);
todoList3.getTodos().add(todo2);
Todo todo3 = new Todo();
todo3.setTodoId("0003");
todo3.setCompleted(true);
todoList3.getTodos().add(todo3);
user.getTodoLists().add(todoList3);
TodoList todoList4 = new TodoList();
todoList4.setListId("004");
todoList4.setName("CCC");
user.getTodoLists().add(todoList4);
expect(userManager.getCurrentUser()).andReturn(user);
replay_();
RemoteTodoList[] remoteTodoList = todosDwrImpl
.getCurrentTodoLists(null);
assertEquals("002", remoteTodoList[0].getListId());
assertEquals("AAA (0/0)", remoteTodoList[0].getDescription());
assertEquals("003", remoteTodoList[1].getListId());
assertEquals("AAA (1/2)", remoteTodoList[1].getDescription());
assertEquals("001", remoteTodoList[2].getListId());
assertEquals("BBB (0/1)", remoteTodoList[2].getDescription());
assertEquals("004", remoteTodoList[3].getListId());
assertEquals("CCC (0/0)", remoteTodoList[3].getDescription());
}
public void testGetTodoById() {
expect(todosManager.findTodo("0001")).andReturn(todo);
replay_();
RemoteTodo remoteTodo = todosDwrImpl.getTodoById("0001");
assertEquals(todo.getDescription(), remoteTodo.getDescription());
assertEquals("09/30/2005", remoteTodo.getDueDate());
assertEquals(todo.getPriority(), remoteTodo.getPriority());
}
public void testReopenTodo() {
expect(todosManager.reopenTodo("001")).andReturn(todo);
replay_();
todosDwrImpl.reopenTodo("001");
}
public void testCompleteTodo() {
expect(todosManager.completeTodo("001")).andReturn(todo);
replay_();
todosDwrImpl.completeTodo("001");
}
public void testEditTodo() {
expect(todosManager.findTodo("001")).andReturn(todo);
todosManager.updateTodo(todo);
replay_();
String description = "new description";
String priority = "100";
String dueDate = "01/01/2006";
todosDwrImpl
.editTodo("001", description, priority, dueDate, null, null);
assertEquals("new description", todo.getDescription());
assertEquals(100, todo.getPriority());
Calendar testCal = Calendar.getInstance();
testCal.setTime(todo.getDueDate());
assertEquals(1, testCal.get(Calendar.DATE));
assertEquals(Calendar.JANUARY, testCal.get(Calendar.MONTH));
assertEquals(2006, testCal.get(Calendar.YEAR));
}
public void testEditTodoWithErrors() {
expect(todosManager.findTodo("001")).andReturn(todo);
todosManager.updateTodo(todo);
replay_();
String description = "new description";
String priority = "string";
String dueDate = "string";
todosDwrImpl
.editTodo("001", description, priority, dueDate, null, null);
assertEquals("new description", todo.getDescription());
assertEquals(0, todo.getPriority());
Calendar testCal = Calendar.getInstance();
testCal.setTime(todo.getDueDate());
assertEquals(30, testCal.get(Calendar.DATE));
assertEquals(Calendar.SEPTEMBER, testCal.get(Calendar.MONTH));
assertEquals(2005, testCal.get(Calendar.YEAR));
}
public void testInputNotes() {
replay_();
String notes = null;
todosDwrImpl.inputNotes(todo, notes);
assertNull(todo.getNotes());
assertFalse(todo.isHasNotes());
notes = "123";
todosDwrImpl.inputNotes(todo, notes);
assertEquals("123", todo.getNotes());
assertTrue(todo.isHasNotes());
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < 1001; i++) {
buffer.append("1234567890");
}
todosDwrImpl.inputNotes(todo, buffer.toString());
assertEquals(10000, todo.getNotes().length());
assertTrue(todo.isHasNotes());
}
public void testDeleteTodo() {
expect(todosManager.findTodo("001")).andReturn(todo);
todosManager.deleteTodo("001");
replay_();
todosDwrImpl.deleteTodo("001");
}
}