From 76025e86dc4cdf4cdba9dd9a0d8f43af8f9866b9 Mon Sep 17 00:00:00 2001
From: Patrik Michal Vlcek <493059@mail.muni.cz>
Date: Mon, 31 Jan 2022 10:16:13 +0100
Subject: [PATCH] implemented unit tests

---
 .../project/db/subtask/SubTaskDaoTest.java    | 73 +++++++++++++++++--
 1 file changed, 65 insertions(+), 8 deletions(-)

diff --git a/src/test/java/cz/muni/fi/pv168/project/db/subtask/SubTaskDaoTest.java b/src/test/java/cz/muni/fi/pv168/project/db/subtask/SubTaskDaoTest.java
index 711c0d4d..a27ae604 100644
--- a/src/test/java/cz/muni/fi/pv168/project/db/subtask/SubTaskDaoTest.java
+++ b/src/test/java/cz/muni/fi/pv168/project/db/subtask/SubTaskDaoTest.java
@@ -1,5 +1,6 @@
 package cz.muni.fi.pv168.project.db.subtask;
 
+import cz.muni.fi.pv168.project.data.task.SubTask;
 import cz.muni.fi.pv168.project.data.task.Task;
 import cz.muni.fi.pv168.project.db.category.CategoryDao;
 import cz.muni.fi.pv168.project.db.categorytime.CategoryTimeDao;
@@ -15,7 +16,10 @@ import org.junit.jupiter.api.Test;
 
 import java.sql.SQLException;
 import java.time.LocalDate;
+import java.util.Arrays;
+import java.util.LinkedList;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
 class SubTaskDaoTest {
@@ -46,32 +50,85 @@ class SubTaskDaoTest {
 
     @AfterEach
     void cleanUp() {
-        taskManager.dropTable();
         subTaskManager.dropTable();
+        taskManager.dropTable();
     }
 
     @Test
-    void getAllEntitiesFor() {
-
+    void getAllEntitiesFor_ExistingTaskWithSubtasks_SubTasksFromTaskReturned() {
+        var task = taskBuilder.build();
+        taskDao.add(task);
+        var subTasks = setupSubtasks(task.getId());
+        assertThat(subTaskDao.getAllEntitiesFor(task.getId())).isEqualTo(subTasks);
     }
 
     @Test
-    void deleteAllEntitiesFor() {
+    void deleteAllEntitiesFor_ExistingTaskWIthSubTasks_AllSubtasksDeleted() {
+        var task = taskBuilder.build();
+        taskDao.add(task);
+        var subTasks = setupSubtasks(task.getId());
+        subTaskDao.deleteAllEntitiesFor(task.getId());
+        assertThat(subTaskDao.getAllEntitiesFor(task.getId())).isEmpty();
     }
 
     @Test
-    void addEntityFor() {
+    void addEntityFor_ExistingTaskWithoutSubTasks_SubTasksAdded() {
+        var task = taskBuilder.build();
+        taskDao.add(task);
+        var subTasks = new LinkedList<SubTask>(Arrays.asList(
+                new SubTask("A", false),
+                new SubTask("B", true),
+                new SubTask("C", false)));
+        for (var subTask :
+                subTasks) {
+            subTaskDao.addEntityFor(task.getId(), subTask);
+        }
+        assertThat(subTaskDao.getAllEntitiesFor(task.getId())).isEqualTo(subTasks);
     }
 
     @Test
-    void update() {
+    void update_ExistingSubTask_SubTaskUpdated() {
+        var task = taskBuilder.build();
+        taskDao.add(task);
+        var subTasks = setupSubtasks(task.getId());
+        subTasks.get(0).setTitle("New TITLE");
+        subTasks.get(0).toggleIsCompleted();
+        subTaskDao.update(subTasks.get(0));
+        assertThat(subTaskDao.getAllEntitiesFor(task.getId())).isEqualTo(subTasks);
     }
 
     @Test
-    void delete() {
+    void delete_ExistingSubtask_SubTaskDeleted() {
+        var task = taskBuilder.build();
+        taskDao.add(task);
+        var subTasks = setupSubtasks(task.getId());
+        subTaskDao.delete(subTasks.get(0));
+        subTasks.remove(0);
+        assertThat(subTaskDao.getAllEntitiesFor(task.getId())).isEqualTo(subTasks);
     }
 
     @Test
-    void fetch() {
+    void fetch_ExistingSubTask_SubTaskFetched() {
+        var task = taskBuilder.build();
+        taskDao.add(task);
+        var subTasks = setupSubtasks(task.getId());
+        var fetchedSubtask = subTaskDao.fetch(subTasks.get(0).getId());
+        assertThat(fetchedSubtask).isEqualTo(subTasks.get(0));
+    }
+
+    private LinkedList<SubTask> setupSubtasks(long taskId) {
+        var subTasks = new LinkedList<SubTask>(Arrays.asList(
+                new SubTask("Testing subtask", false),
+                new SubTask("Testing subtask", false),
+                new SubTask("Testing subtask", false),
+                new SubTask("Testing subtask", false),
+                new SubTask("Testing subtask", false))
+        );
+        for (var subTask :
+                subTasks) {
+            subTaskDao.addEntityFor(taskId, subTask);
+
+        }
+        return subTasks;
     }
 }
\ No newline at end of file
-- 
GitLab