From 64da3c9ab00b4dfcaaf4eaf347a887804aed292c Mon Sep 17 00:00:00 2001 From: Pierre Tellier Date: Wed, 12 Mar 2025 12:07:48 +0100 Subject: [PATCH] feat: tests on AdminApiService --- .../myinpulse/AdminApiServiceTest.java | 117 +++++++++++++++--- 1 file changed, 102 insertions(+), 15 deletions(-) diff --git a/MyINPulse-back/src/test/java/enseirb/myinpulse/AdminApiServiceTest.java b/MyINPulse-back/src/test/java/enseirb/myinpulse/AdminApiServiceTest.java index 47f8af4..abd21fb 100644 --- a/MyINPulse-back/src/test/java/enseirb/myinpulse/AdminApiServiceTest.java +++ b/MyINPulse-back/src/test/java/enseirb/myinpulse/AdminApiServiceTest.java @@ -1,10 +1,12 @@ package enseirb.myinpulse; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static enseirb.myinpulse.model.ProjectDecisionValue.*; + +import static org.junit.jupiter.api.Assertions.*; import enseirb.myinpulse.model.Administrator; import enseirb.myinpulse.model.Project; +import enseirb.myinpulse.model.ProjectDecision; import enseirb.myinpulse.service.AdminApiService; import enseirb.myinpulse.service.database.AdministratorService; import enseirb.myinpulse.service.database.ProjectService; @@ -23,7 +25,9 @@ import java.util.List; @SpringBootTest @Transactional public class AdminApiServiceTest { + private static long administratorid; @Autowired private AdminApiService adminApiService; + @Autowired private ProjectService projectService; @BeforeAll static void setup( @@ -36,30 +40,36 @@ public class AdminApiServiceTest { "testAdminEmpty@example.com", "testAdmin@example.com", "")); - administratorService.addAdministrator( - new Administrator( - "admin2", - "admin2", - "testAdminFull@example.com", - "testAdmin@example.com", - "")); + Administrator a = + administratorService.addAdministrator( + new Administrator( + "admin2", + "admin2", + "testAdminFull@example.com", + "testAdmin@example.com", + "")); + administratorid = a.getIdUser(); projectService.addNewProject( new Project( "sampleProjectAdminApiService", null, LocalDate.now(), - "ONGOING", + ACTIVE, administratorService.getAdministratorByPrimaryMain( "testAdminFull@example.com"))); } + private List IterableToList(Iterable iterable) { + List l = new ArrayList<>(); + iterable.forEach(l::add); + return l; + } + @Test void getProjectOfAdminIsEmpty() { Iterable projects = adminApiService.getProjectsOfAdmin("testAdminEmpty@example.com"); - List l = new ArrayList<>(); - projects.forEach(l::add); - assertEquals(0, l.size()); + assertEquals(0, IterableToList(projects).size()); } @Test @@ -77,10 +87,87 @@ public class AdminApiServiceTest { void getProjectOfAdminNotEmpty() { Iterable projects = adminApiService.getProjectsOfAdmin("testAdminFull@example.com"); - List l = new ArrayList<>(); - projects.forEach(l::add); + List l = IterableToList(projects); assertEquals(1, l.size()); Project p = l.getFirst(); assertEquals(p.getProjectName(), "sampleProjectAdminApiService"); } + + @Test + void getPendingProjectsEmpty() { + assertEquals(0, IterableToList(this.adminApiService.getPendingProjects()).size()); + } + + @Test + void getPendingProjectsNotEmpty() { + this.projectService.addNewProject( + new Project( + "PendingProjectAdminApiService1", null, LocalDate.now(), PENDING, null)); + this.projectService.addNewProject( + new Project( + "PendingProjectAdminApiService2", null, LocalDate.now(), PENDING, null)); + Iterable pendingProjects = this.adminApiService.getPendingProjects(); + List pendingProjectsList = IterableToList(pendingProjects); + assertEquals(2, pendingProjectsList.size()); + assertTrue( + List.of("PendingProjectAdminApiService1", "PendingProjectAdminApiService2") + .contains(pendingProjectsList.getFirst().getProjectName())); + assertTrue( + List.of("PendingProjectAdminApiService1", "PendingProjectAdminApiService2") + .contains(pendingProjectsList.getLast().getProjectName())); + } + + @Test + void validateInexistantProject() { + ProjectDecision d = new ProjectDecision(-1, 0, 1); + assertThrows(ResponseStatusException.class, () -> this.adminApiService.validateProject(d)); + } + + @Test + void validateExistantProject() { + Project p = + new Project("PendingProjectAdminApiService2", null, LocalDate.now(), PENDING, null); + this.projectService.addNewProject(p); + assertEquals(PENDING, p.getProjectStatus()); + ProjectDecision d = new ProjectDecision(p.getIdProject(), administratorid, 1); + this.adminApiService.validateProject(d); + assertEquals(ACTIVE, p.getProjectStatus()); + + // Check if the project was really updated in the database + assertEquals(0, IterableToList(this.adminApiService.getPendingProjects()).size()); + } + + @Test + void refuseExistantProject() { + Project p = + new Project("PendingProjectAdminApiService2", null, LocalDate.now(), PENDING, null); + this.projectService.addNewProject(p); + assertEquals(PENDING, p.getProjectStatus()); + ProjectDecision d = new ProjectDecision(p.getIdProject(), administratorid, 0); + this.adminApiService.validateProject(d); + assertEquals(REJECTED, p.getProjectStatus()); + + // Check if the project was really updated in the database + assertEquals(0, IterableToList(this.adminApiService.getPendingProjects()).size()); + } + + @Test + void addProject() { + assertEquals(0, IterableToList(this.adminApiService.getPendingProjects()).size()); + Project p1 = + new Project("PendingProjectAdminApiService2", null, LocalDate.now(), PENDING, null); + this.adminApiService.addNewProject(p1); + + assertEquals(1, IterableToList(this.adminApiService.getPendingProjects()).size()); + } + + @Test + void addDuplicateProject() { + Project p1 = + new Project("PendingProjectAdminApiService2", null, LocalDate.now(), PENDING, null); + Project p2 = + new Project("PendingProjectAdminApiService2", null, LocalDate.now(), PENDING, null); + this.adminApiService.addNewProject(p1); + assertThrows(ResponseStatusException.class, () -> this.adminApiService.addNewProject(p2)); + } }