package se.chalmers.dat255.grupp12; import org.junit.*; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.*; /** * Date: 2013-10-10 * Time: 14:13 */ public class DatabaseTest { private Database db; @Before public void setUp() { db = Database.getInstance(); } @Test public void testGetInsertUser() throws Exception { String userEmail = "johanmail1"; User johan = db.insertUser(new User("Johan", userEmail)); User newUser = db.getUser(johan.getId()); assertEquals("Inserted user is the same as get by id returns", newUser, johan); newUser = db.getUser(userEmail); assertEquals("Inserted user is the same as get by mail returns", newUser, johan); } @Test(expected = DataNotFoundException.class) public void testDeleteUser() throws Exception { User johan = new User("Johan", "johanmail3"); db.insertUser(johan); db.deleteUser(johan.getId()); // Will throw DataNotFoundException if user doesn't exist db.getUser(johan.getId()); } @Test public void testUpdateUser() throws Exception { User johan = new User("Johan Lindskogen", "johanmail4"); db.insertUser(johan); User newJohan = new User("Johan Hage", "johanmail5"); db.updateUser(johan, newJohan); User u2 = db.getUser(newJohan.getId()); assertEquals("User from database is same as new user", newJohan, u2); } @Test public void testGetLists() throws Exception { User u = db.insertUser(new User("Johan", "johanmail6")); TaskList list = new TaskList("List1"); TaskList list2 = new TaskList("List2"); TaskList list3 = new TaskList("List3"); db.insertList(list, u); db.insertList(list2, u); db.insertList(list3, u); List<TaskList> lists = db.getLists(u); assertTrue("List1 is in db", lists.contains(list)); assertTrue("List2 is in db", lists.contains(list2)); assertTrue("List3 is in db", lists.contains(list3)); } @Test public void testGetInsertList() throws Exception { User u = db.insertUser(new User("Johan", "johanmail7")); TaskList list = new TaskList("List"); db.insertList(list, u); TaskList list2 = db.getList(list.getId()); assertEquals("List is inserted and got correctly", list, list2); } @Test public void testUpdateList() throws Exception { User johan = new User("Johan Lindskogen", "johanmail8"); db.insertUser(johan); TaskList list1 = new TaskList("list1"); db.insertList(list1, johan); TaskList newList = new TaskList("list2"); db.updateList(list1.getId(), newList); TaskList l2 = db.getList(list1.getId()); assertEquals("User from database is same as new user", newList, l2); } @Test(expected = DataNotFoundException.class) public void testDeleteList() throws Exception { User johan = new User("Johan", "johanmail9"); db.insertUser(johan); TaskList list = new TaskList("title"); db.insertList(list, johan); db.deleteList(list.getId()); // Will throw DataNotFoundException if list doesn't exist db.getList(list.getId()); } @Test public void testGetInsertTask() throws Exception { User u = db.insertUser(new User("Johan", "johanmail10")); TaskList list = new TaskList("List"); list.add(new Task("Tasktitle", 10, "Buy stuff", false)); db.insertList(list, u); TaskList list2 = db.getList(list.getId()); assertEquals("List is inserted and got correctly", list, list2); } @Test public void testUpdateTask() throws Exception { User u = db.insertUser(new User("Johan", "johanmail11")); TaskList list = new TaskList("List"); Task task = new Task("Tasktitle", 10, "Buy stuff", false); list.add(task); db.insertList(list, u); Task newTask = new Task("New tasktitle", 11, "Buy more stuff", true); db.updateTask(task.getId(), newTask); assertEquals("Task is updated correctly", newTask, db.getTask(newTask.getId())); } @Test(expected = DataNotFoundException.class) public void testDeleteTask() throws Exception { User johan = new User("Johan", "johanmail12"); db.insertUser(johan); TaskList list = new TaskList("title"); Task task = new Task("Task", 10, "Buy stuff", false); db.insertList(list, johan); db.deleteTask(task.getId()); // Will throw DataNotFoundException if task doesn't exist db.getTask(task.getId()); } @Test public void testAssignUserToTask() throws Exception { User johan = new User("Johan Lindskogen", "johanmail13"); db.insertUser(johan); TaskList list = new TaskList("title"); Task task = new Task("Task", 10, "Buy stuff", false); list.add(task); db.insertList(list, johan); db.assignUserToTask(task.getId(), johan); List<Task> taskList = db.getUserTasks(johan); assertTrue("User was assigned to task", taskList.contains(task)); } @Test public void testAssignUserToList() throws Exception { User johan = new User("Johan Lindskogen", "johanmail14"); User johan2 = new User("Johan Hage", "johanmail15"); db.insertUser(johan); db.insertUser(johan2); TaskList list = new TaskList("title"); db.insertList(list, johan); db.assignUserToList(johan2, list.getId()); TaskList dblist = db.getList(list.getId()); List<TaskList> taskLists = db.getLists(johan2); assertTrue("User was assigned to list", taskLists.contains(list) && dblist.getCollaborators().contains(johan2)); int size = dblist.getCollaborators().size(); db.assignUserToList(johan2, list.getId()); dblist = db.getList(list.getId()); assertTrue("User assign was not duplicated", dblist.getCollaborators().size() == size); } @Test public void testGetUserTasks() throws Exception { User johan = new User("Johan Lindskogen", "johanmail16"); db.insertUser(johan); TaskList list = new TaskList("title"); List<Task> tasks = new ArrayList<Task>(); tasks.add(new Task("title1")); tasks.add(new Task("title2")); tasks.add(new Task("title3")); for (Task task : tasks) { list.add(task); } db.insertList(list, johan); for (Task task : tasks) { db.assignUserToTask(task.getId(), johan); } List<Task> taskList = db.getUserTasks(johan); assertTrue("Tasks assigned to User are saved and got correctly", taskList.containsAll(tasks)); } @Test public void testGetUsers() throws Exception { User johan1 = db.insertUser(new User("Johan", "johansmail17")); User johan2 = db.insertUser(new User("Johan", "johansmail18")); User johan3 = db.insertUser(new User("Johan", "johansmail19")); TaskList list = db.insertList(new TaskList("title"), johan1); db.assignUserToList(johan2,list.getId()); db.assignUserToList(johan3,list.getId()); List<User> users = db.getUsers(list.getId()); assertTrue("Users successfully added to the list", users.contains(johan1) && users.contains(johan2) && users.contains(johan3)); } @Test public void testRemoveUserFromList() throws Exception { User johan = new User("Johan", "johanmail20"); db.insertUser(johan); TaskList list = db.insertList(new TaskList("title"),johan); User johan2 = new User("Johan2", "johanmail21"); db.insertUser(johan2); db.assignUserToList(johan2, list.getId()); assertTrue("User successfully added to list", db.getUsers(list.getId()).contains(johan2)); db.removeUserFromList(johan2.getId(), list.getId()); assertFalse("User successfully removed from list", db.getUsers(list.getId()).contains(johan2)); } @Test(expected = DataNotFoundException.class) public void testRemoveUserAndDeleteList() throws Exception{ User johan = new User("Johan", "johanmail22"); User ville = new User("ville", "johanmail23"); db.insertUser(johan); db.insertUser(ville); TaskList list = db.insertList(new TaskList("title"), johan); db.assignUserToList(ville, list.getId()); assertTrue("User successfully added to list", db.getUsers(list.getId()).contains(ville)); db.deleteList(list.getId()); assertFalse("User successfully removed from list", db.getUsers(list.getId()).contains(ville)); db.getList(list.getId()); } }