diff --git a/backend/.idea/workspace.xml b/backend/.idea/workspace.xml
index 5392fa7..1088a8b 100644
--- a/backend/.idea/workspace.xml
+++ b/backend/.idea/workspace.xml
@@ -4,8 +4,11 @@
-
+
+
+
+
@@ -54,7 +57,7 @@
"git-widget-placeholder": "tests",
"ignore.virus.scanning.warn.message": "true",
"last_directory_selection": "D:/Programmierprojekte/TimeManager/backend/src/main/java/core/api/models/timemanager",
- "last_opened_file_path": "D:/Programmierprojekte/Dicewars/client",
+ "last_opened_file_path": "/media/sebastian/Data2/Programmierprojekte/TimeManager/backend/src/main/resources",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
@@ -66,22 +69,99 @@
},
"keyToStringList": {
"DatabaseDriversLRU": [
+ "h2",
"mariadb"
]
}
}]]>
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -96,7 +176,11 @@
-
+
+
+
+
+
@@ -129,6 +213,9 @@
+
+
+
@@ -306,7 +393,15 @@
1699207725883
-
+
+
+ 1699380549911
+
+
+
+ 1699380549911
+
+
@@ -336,7 +431,8 @@
-
+
+
diff --git a/backend/src/main/java/core/entities/timemanager/Taskgroup.java b/backend/src/main/java/core/entities/timemanager/Taskgroup.java
index be2d450..e7f0477 100644
--- a/backend/src/main/java/core/entities/timemanager/Taskgroup.java
+++ b/backend/src/main/java/core/entities/timemanager/Taskgroup.java
@@ -116,4 +116,17 @@ public class Taskgroup {
}
return activeAmountTasks;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Taskgroup taskgroup = (Taskgroup) o;
+ return taskgroupID == taskgroup.taskgroupID;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(taskgroupID);
+ }
}
diff --git a/backend/src/test/java/core/taskgroups/TaskgroupRepsitoryTest.java b/backend/src/test/java/core/taskgroups/TaskgroupRepsitoryTest.java
new file mode 100644
index 0000000..7e81bb7
--- /dev/null
+++ b/backend/src/test/java/core/taskgroups/TaskgroupRepsitoryTest.java
@@ -0,0 +1,93 @@
+package core.taskgroups;
+
+import core.entities.User;
+import core.entities.timemanager.Taskgroup;
+import core.repositories.timemanager.TaskgroupRepository;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
+import org.springframework.test.context.jdbc.Sql;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import java.util.List;
+
+import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
+
+@ExtendWith(SpringExtension.class)
+@DataJpaTest
+public class TaskgroupRepsitoryTest {
+
+ @Autowired private TaskgroupRepository taskgroupRepository;
+ @Autowired private TestEntityManager testEntityManager;
+
+ @Test
+ @Sql("classpath:taskgroupRepositoryTestEntries.sql")
+ void findAllByUser() {
+ User testUser1 = testEntityManager.find(User.class, 1L);
+ User testUser2 = testEntityManager.find(User.class, 2L);
+
+ List result_user2 = taskgroupRepository.findAllByUser(testUser2.getUsername());
+ assertEquals(0, result_user2.size());
+
+ List result_user1 = taskgroupRepository.findAllByUser(testUser1.getUsername());
+ assertEquals(8, result_user1.size());
+ }
+
+ @Test
+ @Sql("classpath:taskgroupRepositoryTestEntries.sql")
+ void existsByTaskgroupNameAndUser() {
+ User testUser1 = testEntityManager.find(User.class, 1L);
+ User testUser2 = testEntityManager.find(User.class, 2L);
+
+ //Situation 1: Taskgroup exists but within another user
+ assertFalse(taskgroupRepository.existsByTaskgroupNameAndUser("No children", testUser2));
+
+ //Situation 2: Taskgroup exists not
+ assertFalse(taskgroupRepository.existsByTaskgroupNameAndUser("ada", testUser1));
+
+ //Situation 3: Taskgroup (top) exists on user
+ assertTrue(taskgroupRepository.existsByTaskgroupNameAndUser("No children", testUser1));
+
+ //Situation 4: Taskgroup exists on user but not on top level
+ assertTrue(taskgroupRepository.existsByTaskgroupNameAndUser("Taskgroup 1.1", testUser1));
+ }
+
+ @Test
+ @Sql("classpath:taskgroupRepositoryTestEntries.sql")
+ void findAllTopTaskgroupsByUser() {
+ User testUser1 = testEntityManager.find(User.class, 1L);
+ User testUser2 = testEntityManager.find(User.class, 2L);
+
+ //Situation 1: Empty user, no taskgroups
+ assertEquals(0, taskgroupRepository.findAllTopTaskgroupsByUser(testUser2.getUsername()).size());
+
+ //Situation 2: Only top taskgroups are returned
+ List topgroups_user1 = taskgroupRepository.findAllTopTaskgroupsByUser(testUser1.getUsername());
+ assertEquals(3, topgroups_user1.size());
+ assertTrue(topgroups_user1.contains(testEntityManager.find(Taskgroup.class, 1L)));
+ assertTrue(topgroups_user1.contains(testEntityManager.find(Taskgroup.class, 2L)));
+ assertTrue(topgroups_user1.contains(testEntityManager.find(Taskgroup.class, 5L)));
+
+ //Situation 3: User with username does not exist
+ assertEquals(0, taskgroupRepository.findAllTopTaskgroupsByUser("Rotzbakke").size());
+ }
+ @Test
+ @Sql("classpath:taskgroupRepositoryTestEntries.sql")
+ void deleteAllByUser() {
+ User testUser1 = testEntityManager.find(User.class, 1L);
+ User testUser2 = testEntityManager.find(User.class, 2L);
+
+ taskgroupRepository.deleteAllByUser(testUser2);
+ for(long i=1; i<=8; i++) {
+ assertThat(testEntityManager.find(Taskgroup.class, i)).isNotNull();
+ }
+
+ taskgroupRepository.deleteAllByUser(testUser1);
+ for(long i=1; i<=8; i++) {
+ assertThat(testEntityManager.find(Taskgroup.class, i)).isNull();
+ }
+ }
+}
diff --git a/backend/src/test/resources/taskgroupRepositoryTestEntries.sql b/backend/src/test/resources/taskgroupRepositoryTestEntries.sql
new file mode 100644
index 0000000..2c65e97
--- /dev/null
+++ b/backend/src/test/resources/taskgroupRepositoryTestEntries.sql
@@ -0,0 +1,12 @@
+INSERT INTO users (id, username, email, password) VALUES (1, 'Testuser1', 'test1@test.com', '123456');
+INSERT INTO users (id, username, email, password) VALUES (2, 'Testuser2', 'test2@test.com', '123456');
+
+INSERT INTO taskgroups (taskgroupid, name, parent_id, taskgroupuser) VALUES (1, 'No children', null, 1);
+INSERT INTO taskgroups (taskgroupid, name, parent_id, taskgroupuser) VALUES (2, 'Taskgroup 1', null, 1);
+INSERT INTO taskgroups (taskgroupid, name, parent_id, taskgroupuser) VALUES (3, 'Taskgroup 1.1', 2, 1);
+INSERT INTO taskgroups (taskgroupid, name, parent_id, taskgroupuser) VALUES (4, 'Taskgroup 1.2', 2, 1);
+
+INSERT INTO taskgroups (taskgroupid, name, parent_id, taskgroupuser) VALUES (5, 'Taskgroup 2', null, 1);
+INSERT INTO taskgroups (taskgroupid, name, parent_id, taskgroupuser) VALUES (6, 'Taskgroup 2.1', 5, 1);
+INSERT INTO taskgroups (taskgroupid, name, parent_id, taskgroupuser) VALUES (7, 'Taskgroup 2.2', 5, 1);
+INSERT INTO taskgroups (taskgroupid, name, parent_id, taskgroupuser) VALUES (8, 'Taskgroup 2.1.2', 6, 1);
\ No newline at end of file