backend-api #6
@@ -26,8 +26,7 @@ public class Project {
 | 
				
			|||||||
    private byte[] logo;
 | 
					    private byte[] logo;
 | 
				
			||||||
    private LocalDate creationDate;
 | 
					    private LocalDate creationDate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Column(length = 255)
 | 
					    @Column private ProjectDecisionValue projectStatus;
 | 
				
			||||||
    private String projectStatus;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @ManyToOne(fetch = FetchType.LAZY)
 | 
					    @ManyToOne(fetch = FetchType.LAZY)
 | 
				
			||||||
    @JoinColumn(name = "idAdministrator")
 | 
					    @JoinColumn(name = "idAdministrator")
 | 
				
			||||||
@@ -42,11 +41,12 @@ public class Project {
 | 
				
			|||||||
            String projectName,
 | 
					            String projectName,
 | 
				
			||||||
            byte[] logo,
 | 
					            byte[] logo,
 | 
				
			||||||
            LocalDate creationDate,
 | 
					            LocalDate creationDate,
 | 
				
			||||||
            String projectStatus,
 | 
					            ProjectDecisionValue projectStatus,
 | 
				
			||||||
            Administrator projectAdministrator) {
 | 
					            Administrator projectAdministrator) {
 | 
				
			||||||
        this.projectName = projectName;
 | 
					        this.projectName = projectName;
 | 
				
			||||||
        this.logo = logo;
 | 
					        this.logo = logo;
 | 
				
			||||||
        this.creationDate = creationDate;
 | 
					        this.creationDate = creationDate;
 | 
				
			||||||
 | 
					        // this.projectStatus = (long) projectStatus.ordinal();
 | 
				
			||||||
        this.projectStatus = projectStatus;
 | 
					        this.projectStatus = projectStatus;
 | 
				
			||||||
        this.projectAdministrator = projectAdministrator;
 | 
					        this.projectAdministrator = projectAdministrator;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -83,11 +83,11 @@ public class Project {
 | 
				
			|||||||
        this.creationDate = creationDate;
 | 
					        this.creationDate = creationDate;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getProjectStatus() {
 | 
					    public ProjectDecisionValue getProjectStatus() {
 | 
				
			||||||
        return projectStatus;
 | 
					        return projectStatus;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setProjectStatus(String projectStatus) {
 | 
					    public void setProjectStatus(ProjectDecisionValue projectStatus) {
 | 
				
			||||||
        this.projectStatus = projectStatus;
 | 
					        this.projectStatus = projectStatus;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,4 +4,22 @@ public class ProjectDecision {
 | 
				
			|||||||
    public long projectId;
 | 
					    public long projectId;
 | 
				
			||||||
    public long adminId;
 | 
					    public long adminId;
 | 
				
			||||||
    public long isAccepted;
 | 
					    public long isAccepted;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ProjectDecision(long projectId, long adminId, long isAccepted) {
 | 
				
			||||||
 | 
					        this.projectId = projectId;
 | 
				
			||||||
 | 
					        this.adminId = adminId;
 | 
				
			||||||
 | 
					        this.isAccepted = isAccepted;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public String toString() {
 | 
				
			||||||
 | 
					        return "ProjectDecision{"
 | 
				
			||||||
 | 
					                + "projectId="
 | 
				
			||||||
 | 
					                + projectId
 | 
				
			||||||
 | 
					                + ", adminId="
 | 
				
			||||||
 | 
					                + adminId
 | 
				
			||||||
 | 
					                + ", isAccepted="
 | 
				
			||||||
 | 
					                + isAccepted
 | 
				
			||||||
 | 
					                + '}';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					package enseirb.myinpulse.model;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public enum ProjectDecisionValue {
 | 
				
			||||||
 | 
					    PENDING,
 | 
				
			||||||
 | 
					    ACTIVE,
 | 
				
			||||||
 | 
					    ENDED,
 | 
				
			||||||
 | 
					    ABORTED,
 | 
				
			||||||
 | 
					    REJECTED,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -2,13 +2,18 @@ package enseirb.myinpulse.repository;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import enseirb.myinpulse.model.Administrator;
 | 
					import enseirb.myinpulse.model.Administrator;
 | 
				
			||||||
import enseirb.myinpulse.model.Project;
 | 
					import enseirb.myinpulse.model.Project;
 | 
				
			||||||
 | 
					import enseirb.myinpulse.model.ProjectDecisionValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.springframework.data.jpa.repository.JpaRepository;
 | 
					import org.springframework.data.jpa.repository.JpaRepository;
 | 
				
			||||||
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
 | 
					import org.springframework.data.rest.core.annotation.RepositoryRestResource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Optional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@RepositoryRestResource
 | 
					@RepositoryRestResource
 | 
				
			||||||
public interface ProjectRepository extends JpaRepository<Project, Long> {
 | 
					public interface ProjectRepository extends JpaRepository<Project, Long> {
 | 
				
			||||||
    Iterable<Project> findByProjectAdministrator(Administrator administrator);
 | 
					    Iterable<Project> findByProjectAdministrator(Administrator administrator);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Iterable<Project> findByProjectStatus(String status);
 | 
					    Iterable<Project> findByProjectStatus(ProjectDecisionValue status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Optional<Project> findByProjectName(String projectName);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,8 @@
 | 
				
			|||||||
package enseirb.myinpulse.service;
 | 
					package enseirb.myinpulse.service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static enseirb.myinpulse.model.ProjectDecisionValue.ACTIVE;
 | 
				
			||||||
 | 
					import static enseirb.myinpulse.model.ProjectDecisionValue.REJECTED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import enseirb.myinpulse.model.*;
 | 
					import enseirb.myinpulse.model.*;
 | 
				
			||||||
import enseirb.myinpulse.service.database.AdministratorService;
 | 
					import enseirb.myinpulse.service.database.AdministratorService;
 | 
				
			||||||
import enseirb.myinpulse.service.database.ProjectService;
 | 
					import enseirb.myinpulse.service.database.ProjectService;
 | 
				
			||||||
@@ -44,7 +47,7 @@ public class AdminApiService {
 | 
				
			|||||||
        this.reportService = reportService;
 | 
					        this.reportService = reportService;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO: test
 | 
					    // TODO: check if tests are sufficients - peer verification required
 | 
				
			||||||
    public Iterable<Project> getProjectsOfAdmin(String mail) {
 | 
					    public Iterable<Project> getProjectsOfAdmin(String mail) {
 | 
				
			||||||
        return projectService.getProjectsByAdminId(
 | 
					        return projectService.getProjectsByAdminId(
 | 
				
			||||||
                administratorService.getAdministratorById(
 | 
					                administratorService.getAdministratorById(
 | 
				
			||||||
@@ -54,27 +57,38 @@ public class AdminApiService {
 | 
				
			|||||||
    // TODO
 | 
					    // TODO
 | 
				
			||||||
    public Iterable<Appointment> getUpcomingAppointments(String mail) {
 | 
					    public Iterable<Appointment> getUpcomingAppointments(String mail) {
 | 
				
			||||||
        logger.info("User {} check their upcoming appointments", mail);
 | 
					        logger.info("User {} check their upcoming appointments", mail);
 | 
				
			||||||
 | 
					        throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO: test
 | 
					    // TODO: check if tests are sufficient - peer verification required
 | 
				
			||||||
    public Iterable<Project> getPendingProjects() {
 | 
					    public Iterable<Project> getPendingProjects() {
 | 
				
			||||||
        return this.projectService.getPendingProjects();
 | 
					        return this.projectService.getPendingProjects();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO: test
 | 
					    // TODO: check if tests are sufficient - peer verification required
 | 
				
			||||||
    public void validateProject(ProjectDecision decision) {
 | 
					    public void validateProject(ProjectDecision decision) {
 | 
				
			||||||
        projectService.updateProject(
 | 
					        projectService.updateProject(
 | 
				
			||||||
                decision.projectId,
 | 
					                decision.projectId,
 | 
				
			||||||
                null,
 | 
					                null,
 | 
				
			||||||
                null,
 | 
					                null,
 | 
				
			||||||
                null,
 | 
					                null,
 | 
				
			||||||
                "ACTIVE",
 | 
					                (decision.isAccepted == 1) ? ACTIVE : REJECTED,
 | 
				
			||||||
                this.administratorService.getAdministratorById(decision.projectId));
 | 
					                this.administratorService.getAdministratorById(decision.adminId));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO: solve todo + test
 | 
					    // TODO: check if tests are sufficient - peer verification required
 | 
				
			||||||
    public void addNewProject(Project project) {
 | 
					    public void addNewProject(Project project) {
 | 
				
			||||||
        projectService.addNewProject(project); // TODO: how can the front know the ID ?
 | 
					        project.setIdProject(null);
 | 
				
			||||||
 | 
					        // We remove it from the request to be sure that it will be auto generated
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            this.projectService.getProjectByName(project.getProjectName(), true);
 | 
				
			||||||
 | 
					            throw new ResponseStatusException(HttpStatus.CONFLICT, "Project already exists");
 | 
				
			||||||
 | 
					        } catch (ResponseStatusException e) {
 | 
				
			||||||
 | 
					            if (e.getStatusCode() == HttpStatus.CONFLICT) {
 | 
				
			||||||
 | 
					                throw new ResponseStatusException(HttpStatus.CONFLICT, "Project already exists");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            projectService.addNewProject(project);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void createAppointmentReport(long appointmentId, Report report, String mail) {
 | 
					    public void createAppointmentReport(long appointmentId, Report report, String mail) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
package enseirb.myinpulse.service;
 | 
					package enseirb.myinpulse.service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static enseirb.myinpulse.model.ProjectDecisionValue.PENDING;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import enseirb.myinpulse.model.Project;
 | 
					import enseirb.myinpulse.model.Project;
 | 
				
			||||||
import enseirb.myinpulse.model.SectionCell;
 | 
					import enseirb.myinpulse.model.SectionCell;
 | 
				
			||||||
import enseirb.myinpulse.service.database.ProjectService;
 | 
					import enseirb.myinpulse.service.database.ProjectService;
 | 
				
			||||||
@@ -114,7 +116,7 @@ public class EntrepreneurApiService {
 | 
				
			|||||||
            throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Le projet fourni est vide");
 | 
					            throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Le projet fourni est vide");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        logger.info("User {} created a new project with id {}", mail, project.getIdProject());
 | 
					        logger.info("User {} created a new project with id {}", mail, project.getIdProject());
 | 
				
			||||||
        project.setProjectStatus("PENDING");
 | 
					        project.setProjectStatus(PENDING);
 | 
				
			||||||
        projectService.addNewProject(project);
 | 
					        projectService.addNewProject(project);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,10 @@
 | 
				
			|||||||
package enseirb.myinpulse.service.database;
 | 
					package enseirb.myinpulse.service.database;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static enseirb.myinpulse.model.ProjectDecisionValue.PENDING;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import enseirb.myinpulse.model.Administrator;
 | 
					import enseirb.myinpulse.model.Administrator;
 | 
				
			||||||
import enseirb.myinpulse.model.Project;
 | 
					import enseirb.myinpulse.model.Project;
 | 
				
			||||||
 | 
					import enseirb.myinpulse.model.ProjectDecisionValue;
 | 
				
			||||||
import enseirb.myinpulse.repository.ProjectRepository;
 | 
					import enseirb.myinpulse.repository.ProjectRepository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.apache.logging.log4j.LogManager;
 | 
					import org.apache.logging.log4j.LogManager;
 | 
				
			||||||
@@ -54,7 +57,7 @@ public class ProjectService {
 | 
				
			|||||||
            String projectName,
 | 
					            String projectName,
 | 
				
			||||||
            byte[] logo,
 | 
					            byte[] logo,
 | 
				
			||||||
            LocalDate creationDate,
 | 
					            LocalDate creationDate,
 | 
				
			||||||
            String projectStatus,
 | 
					            ProjectDecisionValue projectStatus,
 | 
				
			||||||
            Administrator administrator) {
 | 
					            Administrator administrator) {
 | 
				
			||||||
        Optional<Project> project = this.projectRepository.findById(id);
 | 
					        Optional<Project> project = this.projectRepository.findById(id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,11 +79,14 @@ public class ProjectService {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (projectStatus != null) {
 | 
					        if (projectStatus != null) {
 | 
				
			||||||
 | 
					            // TODO: check if this is really useful
 | 
				
			||||||
 | 
					            /*
 | 
				
			||||||
            if (!validateStatus(projectStatus)) {
 | 
					            if (!validateStatus(projectStatus)) {
 | 
				
			||||||
                logger.error("updateProjectStatus: Invalid status {}", projectStatus);
 | 
					                logger.error("updateProjectStatus: Invalid status {}", projectStatus);
 | 
				
			||||||
                throw new ResponseStatusException(
 | 
					                throw new ResponseStatusException(
 | 
				
			||||||
                        HttpStatus.NOT_ACCEPTABLE, "Ce status n'est pas accepté");
 | 
					                        HttpStatus.NOT_ACCEPTABLE, "Ce status n'est pas accepté");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            */
 | 
				
			||||||
            project.get().setProjectStatus(projectStatus);
 | 
					            project.get().setProjectStatus(projectStatus);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -96,10 +102,23 @@ public class ProjectService {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Iterable<Project> getPendingProjects() {
 | 
					    public Iterable<Project> getPendingProjects() {
 | 
				
			||||||
        return this.projectRepository.findByProjectStatus("PENDING");
 | 
					        return this.projectRepository.findByProjectStatus(PENDING);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void deleteProjectById(Long id) {
 | 
					    public void deleteProjectById(Long id) {
 | 
				
			||||||
        this.projectRepository.deleteById(id);
 | 
					        this.projectRepository.deleteById(id);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Project getProjectByName(String name, boolean noerror) {
 | 
				
			||||||
 | 
					        Optional<Project> project = this.projectRepository.findByProjectName(name);
 | 
				
			||||||
 | 
					        if (project.isEmpty()) {
 | 
				
			||||||
 | 
					            if (noerror) logger.error("No project found with name {}", name);
 | 
				
			||||||
 | 
					            throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce projet n'existe pas");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return project.get();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Project getProjectByName(String name) {
 | 
				
			||||||
 | 
					        return getProjectByName(name, false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,12 @@
 | 
				
			|||||||
package enseirb.myinpulse;
 | 
					package enseirb.myinpulse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
					import static enseirb.myinpulse.model.ProjectDecisionValue.*;
 | 
				
			||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
 | 
					
 | 
				
			||||||
 | 
					import static org.junit.jupiter.api.Assertions.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import enseirb.myinpulse.model.Administrator;
 | 
					import enseirb.myinpulse.model.Administrator;
 | 
				
			||||||
import enseirb.myinpulse.model.Project;
 | 
					import enseirb.myinpulse.model.Project;
 | 
				
			||||||
 | 
					import enseirb.myinpulse.model.ProjectDecision;
 | 
				
			||||||
import enseirb.myinpulse.service.AdminApiService;
 | 
					import enseirb.myinpulse.service.AdminApiService;
 | 
				
			||||||
import enseirb.myinpulse.service.database.AdministratorService;
 | 
					import enseirb.myinpulse.service.database.AdministratorService;
 | 
				
			||||||
import enseirb.myinpulse.service.database.ProjectService;
 | 
					import enseirb.myinpulse.service.database.ProjectService;
 | 
				
			||||||
@@ -23,7 +25,9 @@ import java.util.List;
 | 
				
			|||||||
@SpringBootTest
 | 
					@SpringBootTest
 | 
				
			||||||
@Transactional
 | 
					@Transactional
 | 
				
			||||||
public class AdminApiServiceTest {
 | 
					public class AdminApiServiceTest {
 | 
				
			||||||
 | 
					    private static long administratorid;
 | 
				
			||||||
    @Autowired private AdminApiService adminApiService;
 | 
					    @Autowired private AdminApiService adminApiService;
 | 
				
			||||||
 | 
					    @Autowired private ProjectService projectService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @BeforeAll
 | 
					    @BeforeAll
 | 
				
			||||||
    static void setup(
 | 
					    static void setup(
 | 
				
			||||||
@@ -36,30 +40,36 @@ public class AdminApiServiceTest {
 | 
				
			|||||||
                        "testAdminEmpty@example.com",
 | 
					                        "testAdminEmpty@example.com",
 | 
				
			||||||
                        "testAdmin@example.com",
 | 
					                        "testAdmin@example.com",
 | 
				
			||||||
                        ""));
 | 
					                        ""));
 | 
				
			||||||
        administratorService.addAdministrator(
 | 
					        Administrator a =
 | 
				
			||||||
                new Administrator(
 | 
					                administratorService.addAdministrator(
 | 
				
			||||||
                        "admin2",
 | 
					                        new Administrator(
 | 
				
			||||||
                        "admin2",
 | 
					                                "admin2",
 | 
				
			||||||
                        "testAdminFull@example.com",
 | 
					                                "admin2",
 | 
				
			||||||
                        "testAdmin@example.com",
 | 
					                                "testAdminFull@example.com",
 | 
				
			||||||
                        ""));
 | 
					                                "testAdmin@example.com",
 | 
				
			||||||
 | 
					                                ""));
 | 
				
			||||||
 | 
					        administratorid = a.getIdUser();
 | 
				
			||||||
        projectService.addNewProject(
 | 
					        projectService.addNewProject(
 | 
				
			||||||
                new Project(
 | 
					                new Project(
 | 
				
			||||||
                        "sampleProjectAdminApiService",
 | 
					                        "sampleProjectAdminApiService",
 | 
				
			||||||
                        null,
 | 
					                        null,
 | 
				
			||||||
                        LocalDate.now(),
 | 
					                        LocalDate.now(),
 | 
				
			||||||
                        "ONGOING",
 | 
					                        ACTIVE,
 | 
				
			||||||
                        administratorService.getAdministratorByPrimaryMain(
 | 
					                        administratorService.getAdministratorByPrimaryMain(
 | 
				
			||||||
                                "testAdminFull@example.com")));
 | 
					                                "testAdminFull@example.com")));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private <T> List<T> IterableToList(Iterable<T> iterable) {
 | 
				
			||||||
 | 
					        List<T> l = new ArrayList<>();
 | 
				
			||||||
 | 
					        iterable.forEach(l::add);
 | 
				
			||||||
 | 
					        return l;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    void getProjectOfAdminIsEmpty() {
 | 
					    void getProjectOfAdminIsEmpty() {
 | 
				
			||||||
        Iterable<Project> projects =
 | 
					        Iterable<Project> projects =
 | 
				
			||||||
                adminApiService.getProjectsOfAdmin("testAdminEmpty@example.com");
 | 
					                adminApiService.getProjectsOfAdmin("testAdminEmpty@example.com");
 | 
				
			||||||
        List<Project> l = new ArrayList<>();
 | 
					        assertEquals(0, IterableToList(projects).size());
 | 
				
			||||||
        projects.forEach(l::add);
 | 
					 | 
				
			||||||
        assertEquals(0, l.size());
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
@@ -77,10 +87,87 @@ public class AdminApiServiceTest {
 | 
				
			|||||||
    void getProjectOfAdminNotEmpty() {
 | 
					    void getProjectOfAdminNotEmpty() {
 | 
				
			||||||
        Iterable<Project> projects =
 | 
					        Iterable<Project> projects =
 | 
				
			||||||
                adminApiService.getProjectsOfAdmin("testAdminFull@example.com");
 | 
					                adminApiService.getProjectsOfAdmin("testAdminFull@example.com");
 | 
				
			||||||
        List<Project> l = new ArrayList<>();
 | 
					        List<Project> l = IterableToList(projects);
 | 
				
			||||||
        projects.forEach(l::add);
 | 
					 | 
				
			||||||
        assertEquals(1, l.size());
 | 
					        assertEquals(1, l.size());
 | 
				
			||||||
        Project p = l.getFirst();
 | 
					        Project p = l.getFirst();
 | 
				
			||||||
        assertEquals(p.getProjectName(), "sampleProjectAdminApiService");
 | 
					        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