backend-api #6
@@ -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,6 +40,7 @@ public class AdminApiServiceTest {
 | 
			
		||||
                        "testAdminEmpty@example.com",
 | 
			
		||||
                        "testAdmin@example.com",
 | 
			
		||||
                        ""));
 | 
			
		||||
        Administrator a =
 | 
			
		||||
                administratorService.addAdministrator(
 | 
			
		||||
                        new Administrator(
 | 
			
		||||
                                "admin2",
 | 
			
		||||
@@ -43,23 +48,28 @@ public class AdminApiServiceTest {
 | 
			
		||||
                                "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 <T> List<T> IterableToList(Iterable<T> iterable) {
 | 
			
		||||
        List<T> l = new ArrayList<>();
 | 
			
		||||
        iterable.forEach(l::add);
 | 
			
		||||
        return l;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void getProjectOfAdminIsEmpty() {
 | 
			
		||||
        Iterable<Project> projects =
 | 
			
		||||
                adminApiService.getProjectsOfAdmin("testAdminEmpty@example.com");
 | 
			
		||||
        List<Project> 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<Project> projects =
 | 
			
		||||
                adminApiService.getProjectsOfAdmin("testAdminFull@example.com");
 | 
			
		||||
        List<Project> l = new ArrayList<>();
 | 
			
		||||
        projects.forEach(l::add);
 | 
			
		||||
        List<Project> 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<Project> pendingProjects = this.adminApiService.getPendingProjects();
 | 
			
		||||
        List<Project> 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));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user