diff --git a/backend/.idea/workspace.xml b/backend/.idea/workspace.xml
index 0d3facc..15eb121 100644
--- a/backend/.idea/workspace.xml
+++ b/backend/.idea/workspace.xml
@@ -4,10 +4,12 @@
-
-
+
-
+
+
+
+
@@ -86,82 +88,82 @@
-
-
+
+
-
+
-
-
-
+
+
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
-
-
+
+
+
@@ -176,11 +178,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -217,7 +219,8 @@
-
+
+
@@ -443,14 +446,21 @@
1699645467388
-
+
+
+ 1699646291964
+
+
+
+ 1699646291964
+
+
-
@@ -475,16 +485,12 @@
-
+
+
-
- file://$PROJECT_DIR$/src/main/java/core/services/TaskgroupService.java
- 52
-
-
file://$PROJECT_DIR$/src/main/java/core/services/TaskScheduleService.java
87
diff --git a/backend/src/main/java/core/api/models/timemanager/taskgroup/TaskgroupFieldInfo.java b/backend/src/main/java/core/api/models/timemanager/taskgroup/TaskgroupFieldInfo.java
index ca6dcdf..b7ff80b 100644
--- a/backend/src/main/java/core/api/models/timemanager/taskgroup/TaskgroupFieldInfo.java
+++ b/backend/src/main/java/core/api/models/timemanager/taskgroup/TaskgroupFieldInfo.java
@@ -15,6 +15,14 @@ public class TaskgroupFieldInfo {
private long parentID;
+ public TaskgroupFieldInfo(String name, long parentID) {
+ this.name = name;
+ this.parentID = parentID;
+ }
+
+ public TaskgroupFieldInfo() {
+ }
+
public String getName() {
return name;
}
diff --git a/backend/src/main/java/core/entities/timemanager/Taskgroup.java b/backend/src/main/java/core/entities/timemanager/Taskgroup.java
index e7f0477..a832632 100644
--- a/backend/src/main/java/core/entities/timemanager/Taskgroup.java
+++ b/backend/src/main/java/core/entities/timemanager/Taskgroup.java
@@ -11,7 +11,7 @@ import java.util.*;
public class Taskgroup {
@Id
- @GeneratedValue(strategy = GenerationType.AUTO)
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
private long taskgroupID;
@NotBlank
diff --git a/backend/src/main/java/core/services/TaskgroupService.java b/backend/src/main/java/core/services/TaskgroupService.java
index 63479db..11f2fc3 100644
--- a/backend/src/main/java/core/services/TaskgroupService.java
+++ b/backend/src/main/java/core/services/TaskgroupService.java
@@ -80,10 +80,6 @@ public class TaskgroupService {
taskgroupRepository.delete(taskgroup);
}
- public List getTaskgroupsByUser(String username) {
- return taskgroupRepository.findAllByUser(username);
- }
-
public List getTopTaskgroupsByUser(String username) {
return taskgroupRepository.findAllTopTaskgroupsByUser(username);
}
diff --git a/backend/src/test/java/core/taskgroups/TaskgroupServiceTest.java b/backend/src/test/java/core/taskgroups/TaskgroupServiceTest.java
index 8494928..d9d046b 100644
--- a/backend/src/test/java/core/taskgroups/TaskgroupServiceTest.java
+++ b/backend/src/test/java/core/taskgroups/TaskgroupServiceTest.java
@@ -1,11 +1,14 @@
package core.taskgroups;
+import core.api.models.timemanager.taskgroup.TaskgroupFieldInfo;
import core.entities.User;
+import core.entities.timemanager.Task;
import core.entities.timemanager.Taskgroup;
import core.repositories.UserRepository;
import core.repositories.timemanager.TaskgroupRepository;
import core.services.PermissionResult;
import core.services.ServiceExitCode;
+import core.services.ServiceResult;
import core.services.TaskgroupService;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -23,6 +26,9 @@ import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.SqlGroup;
import org.springframework.test.context.junit.jupiter.SpringExtension;
+import javax.persistence.EntityManager;
+import java.util.List;
+import java.util.NoSuchElementException;
import java.util.Optional;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
@@ -35,8 +41,11 @@ public class TaskgroupServiceTest {
private TaskgroupRepository taskgroupRepository;
@Autowired
private TaskgroupService taskgroupService;
+ @Autowired
+ private EntityManager entityManager;
private static final String username = "Testuser1";
+ private static final String username2 = "Testuser2";
@Test
@SqlGroup({
@Sql("classpath:taskgroupRepositoryTestEntries.sql"),
@@ -65,4 +74,126 @@ public class TaskgroupServiceTest {
assertFalse(invalid_user.isHasPermissions());
}
+ @Test
+ @SqlGroup({
+ @Sql("classpath:taskgroupRepositoryTestEntries.sql"),
+ @Sql("classpath:taskRepositoryEntries.sql")
+ })
+ void addTaskgroup() {
+ TaskgroupFieldInfo taskgroupFieldInfo = new TaskgroupFieldInfo("Taskgroup", -1);
+ //Situation 1: No such user
+ assertThrows(NoSuchElementException.class, () -> taskgroupService.addTaskgroup(taskgroupFieldInfo, "Rotzbakke"));
+
+ //Situation 2: Taskgroup already exists
+ Taskgroup taskgroup = taskgroupRepository.findById(1L).get();
+ ServiceResult creationResult = taskgroupService.addTaskgroup(new TaskgroupFieldInfo(taskgroup.getTaskgroupName(), -1), username);
+ assertEquals(ServiceExitCode.ENTITY_ALREADY_EXIST, creationResult.getExitCode());
+ assertThat(creationResult.getResult()).isNull();
+
+ //Situation 3: Taskgroup does not exist, no parent
+ ServiceResult creationResult_3 = taskgroupService.addTaskgroup(taskgroupFieldInfo, username);
+ assertEquals(ServiceExitCode.OK, creationResult_3.getExitCode());
+ assertTrue(taskgroupRepository.existsById(creationResult_3.getResult().getTaskgroupID()));
+
+ //Situation 4: Taskgroup does not exist, with parent; invalid parent (no existent)
+ ServiceResult creationResult_4 = taskgroupService.addTaskgroup(new TaskgroupFieldInfo("Situation 4", 100L), username);
+ assertEquals(ServiceExitCode.MISSING_ENTITY, creationResult_4.getExitCode());
+
+ //Situation 5: Taskgroup does not exist, parent exist
+ ServiceResult creationResult_5 = taskgroupService.addTaskgroup(new TaskgroupFieldInfo("Situation 5", 2L), username);
+ assertEquals(ServiceExitCode.OK, creationResult_5.getExitCode());
+ assertTrue(taskgroupRepository.existsById(creationResult_5.getResult().getTaskgroupID()));
+
+ //Situation 6: taskgroup exist on another user
+ ServiceResult creationResult_6 = taskgroupService.addTaskgroup(new TaskgroupFieldInfo(taskgroup.getTaskgroupName(), -1), username2);
+ assertEquals(ServiceExitCode.OK, creationResult_6.getExitCode());
+ assertTrue(taskgroupRepository.existsById(creationResult_6.getResult().getTaskgroupID()));
+
+ }
+
+ @Test
+ @SqlGroup({
+ @Sql("classpath:taskgroupRepositoryTestEntries.sql"),
+ @Sql("classpath:taskRepositoryEntries.sql")
+ })
+ void editTaskgroup() {
+ Taskgroup taskgroup = taskgroupRepository.findById(1L).get();
+ //Situation 1: Nothing changed
+ ServiceExitCode exitCode_1 = taskgroupService.editTaskgroup(taskgroup, new TaskgroupFieldInfo(taskgroup.getTaskgroupName(),-1));
+ assertEquals(ServiceExitCode.OK, exitCode_1);
+
+ //Situation 2: Name is already taken
+ ServiceExitCode exitCode_2 = taskgroupService.editTaskgroup(taskgroup, new TaskgroupFieldInfo("Taskgroup 1", -1));
+ assertEquals(ServiceExitCode.ENTITY_ALREADY_EXIST, exitCode_2);
+
+ //Situation 3: All fine
+ ServiceExitCode exitCode_3 = taskgroupService.editTaskgroup(taskgroup, new TaskgroupFieldInfo("Situation 3", -1));
+ assertEquals(ServiceExitCode.OK, exitCode_3);
+ }
+
+ @Test
+ @SqlGroup({
+ @Sql("classpath:taskgroupRepositoryTestEntries.sql"),
+ @Sql("classpath:taskRepositoryEntries.sql")
+ })
+ void deleteTaskgroup() {
+ taskgroupService.deleteTaskgroup(entityManager.find(Taskgroup.class, 1L));
+ assertThat(entityManager.find(Taskgroup.class, 1L)).isNull();
+
+ taskgroupService.deleteTaskgroup(entityManager.find(Taskgroup.class, 2L));
+ assertThat(entityManager.find(Taskgroup.class, 2L)).isNull();
+ assertThat(entityManager.find(Taskgroup.class, 3L)).isNull();
+ for(long i=1; i<=14; i++) {
+ assertThat(entityManager.find(Task.class, i)).isNull();
+ }
+
+ taskgroupService.deleteTaskgroup(entityManager.find(Taskgroup.class, 5L));
+ assertThat(entityManager.find(Taskgroup.class, 5L)).isNull();
+ assertThat(entityManager.find(Taskgroup.class, 6L)).isNull();
+ }
+
+ @Test
+ @SqlGroup({
+ @Sql("classpath:taskgroupRepositoryTestEntries.sql"),
+ @Sql("classpath:taskRepositoryEntries.sql")
+ })
+ void getTopTaskgroupsByUser() {
+ //Situation 1: User without taskgroups
+ List taskgroups_user2 = taskgroupService.getTopTaskgroupsByUser(username2);
+ assertEquals(0, taskgroups_user2.size());
+
+
+ //Situation 2: user with taskgroups
+ List taskgroups_user1 = taskgroupService.getTopTaskgroupsByUser(username);
+ assertEquals(3, taskgroups_user1.size());
+ assertTrue(taskgroups_user1.contains(entityManager.find(Taskgroup.class, 1L)));
+ assertTrue(taskgroups_user1.contains(entityManager.find(Taskgroup.class, 2L)));
+ assertTrue(taskgroups_user1.contains(entityManager.find(Taskgroup.class, 5L)));
+
+ //Situation 3: No existent username
+ assertEquals(0, taskgroupService.getTopTaskgroupsByUser("Rotzbakke").size());
+ }
+ @Test
+ @SqlGroup({
+ @Sql("classpath:taskgroupRepositoryTestEntries.sql"),
+ @Sql("classpath:taskRepositoryEntries.sql")
+ })
+ void deleteTaskgroupByUser() {
+ User referenceUser1 = entityManager.find(User.class, 1L);
+ User referenceUser2 = entityManager.find(User.class, 2L);
+
+ taskgroupService.deleteTaskgroupByUser(referenceUser2);
+ for(long i=1; i<=8; i++) {
+ assertThat(entityManager.find(Taskgroup.class, i)).isNotNull();
+ }
+
+ taskgroupService.deleteTaskgroupByUser(referenceUser1);
+ for(long i=1; i<=8; i++) {
+ assertThat(entityManager.find(Taskgroup.class, i)).isNull();
+ }
+ for(long i=1; i<=14; i++) {
+ assertThat(entityManager.find(Task.class, i)).isNull();
+ }
+ }
+
}