added minor change
This commit is contained in:
parent
067eeb9494
commit
8491c9b3cf
@ -0,0 +1,173 @@
|
||||
package enseirb.myinpulse;
|
||||
|
||||
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;
|
||||
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.server.ResponseStatusException;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
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(
|
||||
@Autowired AdministratorService administratorService,
|
||||
@Autowired ProjectService projectService) {
|
||||
administratorService.addAdministrator(
|
||||
new Administrator(
|
||||
"admin",
|
||||
"admin",
|
||||
"testAdminEmpty@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(),
|
||||
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");
|
||||
assertEquals(0, IterableToList(projects).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void getProjectOfInexistantAdminFails() {
|
||||
String nonExistentAdminEmail = "testInexistantAdmin@example.com";
|
||||
|
||||
assertThrows(
|
||||
ResponseStatusException.class,
|
||||
() -> {
|
||||
adminApiService.getProjectsOfAdmin(nonExistentAdminEmail);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void getProjectOfAdminNotEmpty() {
|
||||
Iterable<Project> projects =
|
||||
adminApiService.getProjectsOfAdmin("testAdminFull@example.com");
|
||||
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));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user