From eaf516b75585d90c0a23baeb1aa42cb58c1bb2f5 Mon Sep 17 00:00:00 2001 From: timmi Date: Tue, 1 Apr 2025 18:48:11 -0700 Subject: [PATCH 1/6] Added service method for mass assigning members to team. --- .../service/IsMemberOfService.java | 86 +++++++++++++------ .../service_tests/IsMemberOfServiceTest.java | 83 +++++++++++++++++- 2 files changed, 140 insertions(+), 29 deletions(-) diff --git a/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java b/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java index 5ab3c221..d8ae0daa 100644 --- a/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java +++ b/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java @@ -1,5 +1,8 @@ package com.example.task_manager.service; +import java.util.ArrayList; +import java.util.List; + import org.springframework.stereotype.Service; import com.example.task_manager.DTO.IsMemberOfDTO; @@ -40,42 +43,69 @@ public IsMemberOfService(IsMemberOfRepository isMemberOfRepository, * @param teamId The ID of the team to which the member should be added. * @return */ - public IsMemberOfDTO addMemberToTeam(int teamMemberId, int teamId) { - System.out.println("BELLO it is running yay"); + public IsMemberOfDTO addMemberToTeam(int teamMemberId, int teamId) { + System.out.println("BELLO it is running yay"); - Team team = teamRepository.findById(teamId) - .orElseThrow(() -> new RuntimeException("Team not found with ID: " + teamId)); - - TeamMember teamMember = teamMemberRepository.findById(teamMemberId) - .orElseThrow(() -> new RuntimeException("Team Member not found with ID: " + teamMemberId)); + Team team = teamRepository.findById(teamId) + .orElseThrow(() -> new RuntimeException("Team not found with ID: " + teamId)); - System.out.println("MINIONS"); - - // Check if the member is already in the team - boolean alreadyMember = isMemberOfRepository.existsByTeamMemberAccountIdAndTeamTeamId(teamMemberId, teamId); - if (alreadyMember) { - throw new RuntimeException("Team Member is already in this team. No action needed."); - } + TeamMember teamMember = teamMemberRepository.findById(teamMemberId) + .orElseThrow(() -> new RuntimeException("Team Member not found with ID: " + teamMemberId)); - System.out.println("TONIGHT!!! WE! ARE GOING! TO STEAL! THE MOON!!"); - + System.out.println("MINIONS"); - // Create membership - IsMemberOf isMemberOf = new IsMemberOf(teamMember, team); - isMemberOf = isMemberOfRepository.save(isMemberOf); - isMemberOfRepository.flush(); + // Check if the member is already in the team + boolean alreadyMember = isMemberOfRepository.existsByTeamMemberAccountIdAndTeamTeamId(teamMemberId, teamId); + if (alreadyMember) { + throw new RuntimeException("Team Member is already in this team. No action needed."); + } - System.out.println("DOCTOR NEFARIO"); + System.out.println("TONIGHT!!! WE! ARE GOING! TO STEAL! THE MOON!!"); - team = teamRepository.findById(teamId).orElseThrow(() -> new RuntimeException("RAHHHH can't find it")); - System.out.println("bruh"); + // Create membership + IsMemberOf isMemberOf = new IsMemberOf(teamMember, team); + isMemberOf = isMemberOfRepository.save(isMemberOf); + isMemberOfRepository.flush(); - //call assigned to team notification method - notifService.notifyTeamAssignment(teamMember, team); + System.out.println("DOCTOR NEFARIO"); - // Return DTO - return convertToDTO(isMemberOf); - } + team = teamRepository.findById(teamId).orElseThrow(() -> new RuntimeException("RAHHHH can't find it")); + System.out.println("bruh"); + + //call assigned to team notification method + notifService.notifyTeamAssignment(teamMember, team); + + // Return DTO + return convertToDTO(isMemberOf); + } + + //add multiple members to a team at once + public List massAddMemberToTeam(int teamId, List teamMemberIds) { + Team team = teamRepository.findById(teamId) + .orElseThrow(() -> new RuntimeException("Team not found with ID: " + teamId)); + + List newMembers = new ArrayList<>(); + + for (Integer teamMemberId : teamMemberIds) { + TeamMember teamMember = teamMemberRepository.findById(teamMemberId) + .orElseThrow(() -> new RuntimeException("Team Member not found with ID: " + teamMemberId)); + + boolean alreadyMember = isMemberOfRepository.existsByTeamMemberAccountIdAndTeamTeamId(teamMemberId, teamId); + + if (!alreadyMember) { + IsMemberOf isMemberOf = new IsMemberOf(teamMember, team); + isMemberOf = isMemberOfRepository.save(isMemberOf); + + notifService.notifyTeamAssignment(teamMember, team); + + newMembers.add(convertToDTO(isMemberOf)); + } + } + + isMemberOfRepository.flush(); + + return newMembers; + } /** * Removes a TeamMember from a Team. diff --git a/backend/task-manager/src/test/java/com/example/task_manager/service_tests/IsMemberOfServiceTest.java b/backend/task-manager/src/test/java/com/example/task_manager/service_tests/IsMemberOfServiceTest.java index b27404a7..ce20b5f2 100644 --- a/backend/task-manager/src/test/java/com/example/task_manager/service_tests/IsMemberOfServiceTest.java +++ b/backend/task-manager/src/test/java/com/example/task_manager/service_tests/IsMemberOfServiceTest.java @@ -2,6 +2,8 @@ import static org.junit.jupiter.api.Assertions.*; +import java.util.List; + import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; import org.springframework.boot.test.context.SpringBootTest; @@ -9,6 +11,7 @@ import jakarta.transaction.Transactional; +import com.example.task_manager.DTO.IsMemberOfDTO; import com.example.task_manager.DTO.TeamDTO; import com.example.task_manager.DTO.TeamMemberDTO; import com.example.task_manager.test_helpers.ServiceTestHelper; @@ -60,10 +63,88 @@ void testAddMemberToSameTeamTwice() { isMemberOfService.addMemberToTeam(teamMember.getAccountId(), team.getTeamId()); Exception exception = assertThrows(RuntimeException.class, - () -> isMemberOfService.addMemberToTeam(teamMember.getAccountId(), team.getTeamId())); + () -> isMemberOfService.addMemberToTeam(teamMember.getAccountId(), team.getTeamId())); assertTrue(exception.getMessage().contains("Team Member is already in this team")); } + + @Test + void testMassAddMembersToTeam() { + TeamMemberDTO teamLead = createUniqueTeamMemberDTO(); + TeamDTO team = createUniqueTeamDTO(teamLead); + + TeamMemberDTO member1 = createUniqueTeamMemberDTO(); + TeamMemberDTO member2 = createUniqueTeamMemberDTO(); + TeamMemberDTO member3 = createUniqueTeamMemberDTO(); + + List memberIds = List.of( + member1.getAccountId(), + member2.getAccountId(), + member3.getAccountId() + ); + + List results = isMemberOfService.massAddMemberToTeam(team.getTeamId(), memberIds); + + assertEquals(3, results.size()); + + assertTrue(isMemberOfService.isMemberOfTeam(member1.getAccountId(), team.getTeamId())); + assertTrue(isMemberOfService.isMemberOfTeam(member2.getAccountId(), team.getTeamId())); + assertTrue(isMemberOfService.isMemberOfTeam(member3.getAccountId(), team.getTeamId())); + } + + @Test + void testMassAddMembersWithOneNonExistentId() { + TeamMemberDTO teamLead = createUniqueTeamMemberDTO(); + TeamDTO team = createUniqueTeamDTO(teamLead); + + TeamMemberDTO member1 = createUniqueTeamMemberDTO(); + TeamMemberDTO member2 = createUniqueTeamMemberDTO(); + int nonExistentId = 999999; + + List memberIds = List.of( + member1.getAccountId(), + nonExistentId, + member2.getAccountId() + ); + + Exception exception = assertThrows(RuntimeException.class, () -> + isMemberOfService.massAddMemberToTeam(team.getTeamId(), memberIds) + ); + + assertTrue(exception.getMessage().contains("Team Member not found")); + } + + @Test + void testMassAddMembersToNonExistentTeam() { + TeamMemberDTO member = createUniqueTeamMemberDTO(); + + Exception exception = assertThrows(RuntimeException.class, () -> + isMemberOfService.massAddMemberToTeam(999999, List.of(member.getAccountId())) + ); + + assertTrue(exception.getMessage().contains("Team not found")); + } + + @Test + void testMassAddMembersAlreadyInTeam() { + TeamMemberDTO teamLead = createUniqueTeamMemberDTO(); + TeamDTO team = createUniqueTeamDTO(teamLead); + + TeamMemberDTO member1 = createUniqueTeamMemberDTO(); + TeamMemberDTO member2 = createUniqueTeamMemberDTO(); + + isMemberOfService.addMemberToTeam(member1.getAccountId(), team.getTeamId()); + + List memberIds = List.of( + member1.getAccountId(), // already in team + member2.getAccountId() + ); + + List results = isMemberOfService.massAddMemberToTeam(team.getTeamId(), memberIds); + + assertEquals(1, results.size()); + assertTrue(isMemberOfService.isMemberOfTeam(member2.getAccountId(), team.getTeamId())); + } @Test void testRemoveMemberFromTeam() { From eda4afeb2865650b718cdbe6b686c5f76d03ff79 Mon Sep 17 00:00:00 2001 From: timmi Date: Tue, 1 Apr 2025 18:59:10 -0700 Subject: [PATCH 2/6] Adding controller method for mass assigning members to a team. Tests implemented beforehand. All are passing. --- .../controller/IsMemberOfController.java | 16 +++++++ .../controller/TeamMemberController.java | 6 ++- .../service/IsMemberOfService.java | 2 +- .../IsMemberOfControllerTest.java | 48 +++++++++++++++++++ .../service_tests/IsMemberOfServiceTest.java | 8 ++-- 5 files changed, 73 insertions(+), 7 deletions(-) diff --git a/backend/task-manager/src/main/java/com/example/task_manager/controller/IsMemberOfController.java b/backend/task-manager/src/main/java/com/example/task_manager/controller/IsMemberOfController.java index 252a0ea9..bb4fd432 100644 --- a/backend/task-manager/src/main/java/com/example/task_manager/controller/IsMemberOfController.java +++ b/backend/task-manager/src/main/java/com/example/task_manager/controller/IsMemberOfController.java @@ -1,6 +1,10 @@ package com.example.task_manager.controller; +import com.example.task_manager.DTO.IsMemberOfDTO; import com.example.task_manager.service.IsMemberOfService; + +import java.util.List; + import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -25,6 +29,18 @@ public ResponseEntity addMemberToTeam(@PathVariable int teamMemberId, @PathVa } } + //mass assign members to a team + @PostMapping("/team/{teamId}") + public ResponseEntity massAssignToTeam(@PathVariable int teamId, @RequestBody List teamMemberIds) { + try { + List isMemberOfDTOs = isMemberOfService.massAssignToTeam(teamId, teamMemberIds); + return ResponseEntity.ok(isMemberOfDTOs); + } + catch (RuntimeException e) { + return ResponseEntity.badRequest().body(e.getMessage()); + } + } + // Remove Member from Team @DeleteMapping("/{teamMemberId}/team/{teamId}") public ResponseEntity removeMemberFromTeam(@PathVariable int teamMemberId, @PathVariable int teamId) { diff --git a/backend/task-manager/src/main/java/com/example/task_manager/controller/TeamMemberController.java b/backend/task-manager/src/main/java/com/example/task_manager/controller/TeamMemberController.java index 5c798f6f..b173d224 100644 --- a/backend/task-manager/src/main/java/com/example/task_manager/controller/TeamMemberController.java +++ b/backend/task-manager/src/main/java/com/example/task_manager/controller/TeamMemberController.java @@ -5,11 +5,14 @@ import com.example.task_manager.DTO.TaskDTO; import com.example.task_manager.DTO.TeamDTO; import com.example.task_manager.service.TeamMemberService; + import java.util.List; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import com.example.task_manager.service.IsMemberOfService; + @RestController @RequestMapping("/api/members/actions") public class TeamMemberController { @@ -37,8 +40,7 @@ public ResponseEntity massAssignToTask(@PathVariable int taskId, @RequestBody try { List isAssignedDTOs = teamMemberService.massAssignToTask(taskId, teamMemberIds); return ResponseEntity.ok(isAssignedDTOs); - } - catch (RuntimeException e) { + } catch (RuntimeException e) { return ResponseEntity.badRequest().body(e.getMessage()); } } diff --git a/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java b/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java index d8ae0daa..c97bf973 100644 --- a/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java +++ b/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java @@ -80,7 +80,7 @@ public IsMemberOfDTO addMemberToTeam(int teamMemberId, int teamId) { } //add multiple members to a team at once - public List massAddMemberToTeam(int teamId, List teamMemberIds) { + public List massAssignToTeam(int teamId, List teamMemberIds) { Team team = teamRepository.findById(teamId) .orElseThrow(() -> new RuntimeException("Team not found with ID: " + teamId)); diff --git a/backend/task-manager/src/test/java/com/example/task_manager/controller_tests/IsMemberOfControllerTest.java b/backend/task-manager/src/test/java/com/example/task_manager/controller_tests/IsMemberOfControllerTest.java index c9ad0d2e..7986f452 100644 --- a/backend/task-manager/src/test/java/com/example/task_manager/controller_tests/IsMemberOfControllerTest.java +++ b/backend/task-manager/src/test/java/com/example/task_manager/controller_tests/IsMemberOfControllerTest.java @@ -1,7 +1,11 @@ package com.example.task_manager.controller_tests; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import java.util.List; + import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import com.example.task_manager.DTO.IsMemberOfDTO; @@ -44,6 +48,50 @@ void testAddMemberToTeam() throws Exception { .andExpect(jsonPath("$.teamId").value(teamId)); } + /* + * Test adding multiple members to a team at once + */ + @Test + void testMassAssignToTeam() throws Exception { + int teamId = 100; + List teamMemberIds = List.of(101, 102, 103); + + List mockMemberships = List.of( + new IsMemberOfDTO(1, 101, teamId), + new IsMemberOfDTO(2, 102, teamId), + new IsMemberOfDTO(3, 103, teamId)); + + when(isMemberOfService.massAssignToTeam(eq(teamId), eq(teamMemberIds))).thenReturn(mockMemberships); + + String jsonRequest = "[101, 102, 103]"; + + mockMvc.perform(post("/api/memberships/team/" + teamId) + .contentType("application/json") + .content(jsonRequest)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.length()").value(3)) + .andExpect(jsonPath("$[0].teamMemberId").value(101)) + .andExpect(jsonPath("$[1].teamMemberId").value(102)) + .andExpect(jsonPath("$[2].teamMemberId").value(103)); + } + + @Test + void testMassAssignToTeam_TeamNotFound() throws Exception { + int teamId = 999; + List teamMemberIds = List.of(101, 102, 103); + + String jsonRequest = "[101, 102, 103]"; + + when(isMemberOfService.massAssignToTeam(eq(teamId), eq(teamMemberIds))) + .thenThrow(new RuntimeException("Team not found")); + + mockMvc.perform(post("/api/memberships/team/" + teamId) + .contentType("application/json") + .content(jsonRequest)) + .andExpect(status().isBadRequest()) + .andExpect(content().string("Team not found")); + } + /** * Test Remove Member from Team */ diff --git a/backend/task-manager/src/test/java/com/example/task_manager/service_tests/IsMemberOfServiceTest.java b/backend/task-manager/src/test/java/com/example/task_manager/service_tests/IsMemberOfServiceTest.java index ce20b5f2..a42548b9 100644 --- a/backend/task-manager/src/test/java/com/example/task_manager/service_tests/IsMemberOfServiceTest.java +++ b/backend/task-manager/src/test/java/com/example/task_manager/service_tests/IsMemberOfServiceTest.java @@ -83,7 +83,7 @@ void testMassAddMembersToTeam() { member3.getAccountId() ); - List results = isMemberOfService.massAddMemberToTeam(team.getTeamId(), memberIds); + List results = isMemberOfService.massAssignToTeam(team.getTeamId(), memberIds); assertEquals(3, results.size()); @@ -108,7 +108,7 @@ void testMassAddMembersWithOneNonExistentId() { ); Exception exception = assertThrows(RuntimeException.class, () -> - isMemberOfService.massAddMemberToTeam(team.getTeamId(), memberIds) + isMemberOfService.massAssignToTeam(team.getTeamId(), memberIds) ); assertTrue(exception.getMessage().contains("Team Member not found")); @@ -119,7 +119,7 @@ void testMassAddMembersToNonExistentTeam() { TeamMemberDTO member = createUniqueTeamMemberDTO(); Exception exception = assertThrows(RuntimeException.class, () -> - isMemberOfService.massAddMemberToTeam(999999, List.of(member.getAccountId())) + isMemberOfService.massAssignToTeam(999999, List.of(member.getAccountId())) ); assertTrue(exception.getMessage().contains("Team not found")); @@ -140,7 +140,7 @@ void testMassAddMembersAlreadyInTeam() { member2.getAccountId() ); - List results = isMemberOfService.massAddMemberToTeam(team.getTeamId(), memberIds); + List results = isMemberOfService.massAssignToTeam(team.getTeamId(), memberIds); assertEquals(1, results.size()); assertTrue(isMemberOfService.isMemberOfTeam(member2.getAccountId(), team.getTeamId())); From d5ae338f5e35907186d59dcb144fdd6abd41df25 Mon Sep 17 00:00:00 2001 From: timmi Date: Tue, 1 Apr 2025 19:18:07 -0700 Subject: [PATCH 3/6] Added frontend mass assign to team API endpoint, as well as test which is passing. --- .../controller/IsMemberOfController.java | 2 +- frontend/react-app/src/api/isMemberOfApi.js | 23 +++++++++++++++++ .../tests/api-tests/isMemberOfApiTest.test.js | 25 ++++++++++++++++++- 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/backend/task-manager/src/main/java/com/example/task_manager/controller/IsMemberOfController.java b/backend/task-manager/src/main/java/com/example/task_manager/controller/IsMemberOfController.java index bb4fd432..8f2bd4a9 100644 --- a/backend/task-manager/src/main/java/com/example/task_manager/controller/IsMemberOfController.java +++ b/backend/task-manager/src/main/java/com/example/task_manager/controller/IsMemberOfController.java @@ -30,7 +30,7 @@ public ResponseEntity addMemberToTeam(@PathVariable int teamMemberId, @PathVa } //mass assign members to a team - @PostMapping("/team/{teamId}") + @PostMapping("/team/{teamId}/mass-assign") public ResponseEntity massAssignToTeam(@PathVariable int teamId, @RequestBody List teamMemberIds) { try { List isMemberOfDTOs = isMemberOfService.massAssignToTeam(teamId, teamMemberIds); diff --git a/frontend/react-app/src/api/isMemberOfApi.js b/frontend/react-app/src/api/isMemberOfApi.js index 89b4393f..0f89f799 100644 --- a/frontend/react-app/src/api/isMemberOfApi.js +++ b/frontend/react-app/src/api/isMemberOfApi.js @@ -14,6 +14,29 @@ export const addMemberToTeam = async (teamMemberId, teamId) => { return true; }; +//Adding multiple members to a team at once +export const massAssignToTeam = async (teamId, teamMemberIds) => { + try { + console.log(JSON.stringify(teamMemberIds)); + const response = await fetch(`${BASE_URL}/team/${teamId}/mass-assign`, { + method: 'POST', + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(teamMemberIds) + }); + + if (!response.ok) { + console.error(`Failed to assign members to team: ${response.status} ${response.statusText}`); + return null; + } + + return await response.json(); + } + catch (error) { + console.error("Error assigning members to team: ", error); + throw error; + } +}; + //Remove a member from a team export const removeMemberFromTeam = async (teamMemberId, teamId) => { try { diff --git a/frontend/react-app/src/tests/api-tests/isMemberOfApiTest.test.js b/frontend/react-app/src/tests/api-tests/isMemberOfApiTest.test.js index de65527a..efd55f96 100644 --- a/frontend/react-app/src/tests/api-tests/isMemberOfApiTest.test.js +++ b/frontend/react-app/src/tests/api-tests/isMemberOfApiTest.test.js @@ -1,4 +1,4 @@ -import { addMemberToTeam, removeMemberFromTeam, checkIfAssignedToTeam } from '../../api/isMemberOfApi'; +import { addMemberToTeam, removeMemberFromTeam, checkIfAssignedToTeam, massAssignToTeam } from '../../api/isMemberOfApi'; const BASE_URL = "http://localhost:8080/api/memberships"; @@ -20,6 +20,29 @@ describe('IsMemberOf API', () => { expect(result).toBe(true); }); + //test: adding multiple members to a team + test('massAssignToTeam should return team assignment data on sucess', async () => { + const mockResponse = [ + { "isMemberOfId": 101, "teamMemberId": 1, "teamId": 42 }, + { "isMemberOfId": 102, "teamMemberId": 3, "teamId": 42 }, + { "isMemberOfId": 103, "teamMemberId": 4, "teamId": 42 } + ]; + + const teamMemberIds = [1, 3, 4]; + + fetch.mockResponseOnce(JSON.stringify(mockResponse), { status: 200 }); + + const result = await massAssignToTeam(2, teamMemberIds); + + expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/team/2/mass-assign`, { + method: 'POST', + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(teamMemberIds) + }); + + expect(result).toEqual(mockResponse); + }); + //test: removing a member from a team test('removeMemberFromTeam should return true on success', async () => { fetch.mockResponseOnce('', { status: 200 }); From 234336d93350d31eff5a3fad004bcf2b9234d90e Mon Sep 17 00:00:00 2001 From: timmi Date: Tue, 1 Apr 2025 19:22:23 -0700 Subject: [PATCH 4/6] Updating API documentation. --- API_DOCUMENTATION.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/API_DOCUMENTATION.md b/API_DOCUMENTATION.md index 0775f6fb..d1d01574 100644 --- a/API_DOCUMENTATION.md +++ b/API_DOCUMENTATION.md @@ -264,6 +264,33 @@ All API requests should be made to the following base URL (Spring Boot's default - **Add a Member to a Team:** `POST /{teamMemberId}/team/{teamId}` - **Description:** Adds a team member to a team. +- **Mass Assign to a Team:** `POST /team/{teamId}/mass-assign` + - **Request Body:** + ```json + [1, 2, 3, 4] + ``` + - **Response Body:** + ```json + [ + { + "isMemberOfId": 101, + "teamMemberId": 1, + "teamId": 42 + }, + { + "isMemberOfId": 102, + "teamMemberId": 2, + "teamId": 42 + }, + { + "isMemberOfId": 103, + "teamMemberId": 3, + "teamId": 42 + } + ] + ``` + - **Description:** Adds multiple members to a team at once. If any member is already in the team they will be skipped. If any member does not exist, the entire request will fail with a 400 error. + - **Remove a Member from a Team:** `DELETE /{teamMemberId}/team/{teamId}` - **Description:** Removes a team member from a team. @@ -589,7 +616,7 @@ All API requests should be made to the following base URL (Spring Boot's default - **Mass Assign Members to a Task:** `POST /{taskId}/mass-assign` - **Request Body:** ```json - [1, 2, 3, 4] + [1, 2, 3, 4] ``` - **Response Body:** ```json From afc5893de78bc4d1ecc260edd7bbe9da651e71ae Mon Sep 17 00:00:00 2001 From: timmi Date: Tue, 1 Apr 2025 19:32:53 -0700 Subject: [PATCH 5/6] Correcting DTO to return team member id THEN team id. --- .../com/example/task_manager/service/IsMemberOfService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java b/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java index c97bf973..fe40b3c7 100644 --- a/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java +++ b/backend/task-manager/src/main/java/com/example/task_manager/service/IsMemberOfService.java @@ -152,8 +152,8 @@ public boolean isMemberOfTeam(int teamMemberId, int teamId) { private IsMemberOfDTO convertToDTO(IsMemberOf isMemberOf) { return new IsMemberOfDTO( isMemberOf.getId(), - isMemberOf.getTeam().getTeamId(), - isMemberOf.getTeamMember().getAccountId() + isMemberOf.getTeamMember().getAccountId(), + isMemberOf.getTeam().getTeamId() ); } } From 5a71ed90a65ec9dc3106e9433e37b0b4c34568c0 Mon Sep 17 00:00:00 2001 From: timmi Date: Tue, 1 Apr 2025 20:14:33 -0700 Subject: [PATCH 6/6] Fixing tests. --- .../com/example/task_manager/TaskManagerApplicationTests.java | 2 ++ .../controller_tests/IsMemberOfControllerTest.java | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/task-manager/src/test/java/com/example/task_manager/TaskManagerApplicationTests.java b/backend/task-manager/src/test/java/com/example/task_manager/TaskManagerApplicationTests.java index 5855d027..a4a9ab4a 100644 --- a/backend/task-manager/src/test/java/com/example/task_manager/TaskManagerApplicationTests.java +++ b/backend/task-manager/src/test/java/com/example/task_manager/TaskManagerApplicationTests.java @@ -2,8 +2,10 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; @SpringBootTest +@ActiveProfiles("test") class TaskManagerApplicationTests { @Test diff --git a/backend/task-manager/src/test/java/com/example/task_manager/controller_tests/IsMemberOfControllerTest.java b/backend/task-manager/src/test/java/com/example/task_manager/controller_tests/IsMemberOfControllerTest.java index 7986f452..43f27b78 100644 --- a/backend/task-manager/src/test/java/com/example/task_manager/controller_tests/IsMemberOfControllerTest.java +++ b/backend/task-manager/src/test/java/com/example/task_manager/controller_tests/IsMemberOfControllerTest.java @@ -65,7 +65,7 @@ void testMassAssignToTeam() throws Exception { String jsonRequest = "[101, 102, 103]"; - mockMvc.perform(post("/api/memberships/team/" + teamId) + mockMvc.perform(post("/api/memberships/team/" + teamId + "/mass-assign") .contentType("application/json") .content(jsonRequest)) .andExpect(status().isOk()) @@ -85,7 +85,7 @@ void testMassAssignToTeam_TeamNotFound() throws Exception { when(isMemberOfService.massAssignToTeam(eq(teamId), eq(teamMemberIds))) .thenThrow(new RuntimeException("Team not found")); - mockMvc.perform(post("/api/memberships/team/" + teamId) + mockMvc.perform(post("/api/memberships/team/" + teamId + "/mass-assign") .contentType("application/json") .content(jsonRequest)) .andExpect(status().isBadRequest())