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