Compare commits
No commits in common. "653f9236937769c93e6ba96ca0330ced98ab5651" and "419ceec1bc93326236cd34a802878cd8a431ee15" have entirely different histories.
653f923693
...
419ceec1bc
@ -4,22 +4,4 @@ public class ProjectDecision {
|
||||
public long projectId;
|
||||
public long adminId;
|
||||
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
|
||||
+ '}';
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,5 @@ public enum ProjectDecisionValue {
|
||||
PENDING,
|
||||
ACTIVE,
|
||||
ENDED,
|
||||
ABORTED,
|
||||
REJECTED,
|
||||
ABORTED
|
||||
}
|
||||
|
@ -7,13 +7,9 @@ import enseirb.myinpulse.model.ProjectDecisionValue;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@RepositoryRestResource
|
||||
public interface ProjectRepository extends JpaRepository<Project, Long> {
|
||||
Iterable<Project> findByProjectAdministrator(Administrator administrator);
|
||||
|
||||
Iterable<Project> findByProjectStatus(ProjectDecisionValue status);
|
||||
|
||||
Optional<Project> findByProjectName(String projectName);
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
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.service.database.AdministratorService;
|
||||
@ -30,7 +29,7 @@ public class AdminApiService {
|
||||
this.administratorService = administratorService;
|
||||
}
|
||||
|
||||
// TODO: check if tests are sufficients - peer verification required
|
||||
// TODO: check if test are sufficient
|
||||
public Iterable<Project> getProjectsOfAdmin(String email) {
|
||||
return projectService.getProjectsByAdminId(
|
||||
administratorService.getAdministratorById(
|
||||
@ -42,35 +41,29 @@ public class AdminApiService {
|
||||
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
|
||||
}
|
||||
|
||||
// TODO: check if tests are sufficient - peer verification required
|
||||
// TODO: test
|
||||
public Iterable<Project> getPendingProjects() {
|
||||
return this.projectService.getPendingProjects();
|
||||
}
|
||||
|
||||
// TODO: check if tests are sufficient - peer verification required
|
||||
// TODO: test
|
||||
public void validateProject(ProjectDecision decision) {
|
||||
projectService.updateProject(
|
||||
decision.projectId,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
(decision.isAccepted == 1) ? ACTIVE : REJECTED,
|
||||
this.administratorService.getAdministratorById(decision.adminId));
|
||||
if (decision.isAccepted == 1) {
|
||||
projectService.updateProject(
|
||||
decision.projectId,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
ACTIVE,
|
||||
this.administratorService.getAdministratorById(decision.projectId));
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: check if tests are sufficient - peer verification required
|
||||
// TODO: solve todo + test
|
||||
public void addNewProject(Project project) {
|
||||
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);
|
||||
}
|
||||
projectService.addNewProject(
|
||||
project); // TODO: how can the front know the ID ? => it does not, thus needing to
|
||||
// have null in the project id field
|
||||
}
|
||||
|
||||
// TODO
|
||||
|
@ -108,17 +108,4 @@ public class ProjectService {
|
||||
public void deleteProjectById(Long 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,12 +1,10 @@
|
||||
package enseirb.myinpulse;
|
||||
|
||||
import static enseirb.myinpulse.model.ProjectDecisionValue.*;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
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;
|
||||
@ -25,9 +23,7 @@ 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(
|
||||
@ -40,36 +36,30 @@ public class AdminApiServiceTest {
|
||||
"testAdminEmpty@example.com",
|
||||
"testAdmin@example.com",
|
||||
""));
|
||||
Administrator a =
|
||||
administratorService.addAdministrator(
|
||||
new Administrator(
|
||||
"admin2",
|
||||
"admin2",
|
||||
"testAdminFull@example.com",
|
||||
"testAdmin@example.com",
|
||||
""));
|
||||
administratorid = a.getIdUser();
|
||||
administratorService.addAdministrator(
|
||||
new Administrator(
|
||||
"admin2",
|
||||
"admin2",
|
||||
"testAdminFull@example.com",
|
||||
"testAdmin@example.com",
|
||||
""));
|
||||
projectService.addNewProject(
|
||||
new Project(
|
||||
"sampleProjectAdminApiService",
|
||||
null,
|
||||
LocalDate.now(),
|
||||
ACTIVE,
|
||||
"ONGOING",
|
||||
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());
|
||||
List<Project> l = new ArrayList<>();
|
||||
projects.forEach(l::add);
|
||||
assertEquals(0, l.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -87,87 +77,10 @@ public class AdminApiServiceTest {
|
||||
void getProjectOfAdminNotEmpty() {
|
||||
Iterable<Project> projects =
|
||||
adminApiService.getProjectsOfAdmin("testAdminFull@example.com");
|
||||
List<Project> l = IterableToList(projects);
|
||||
List<Project> l = new ArrayList<>();
|
||||
projects.forEach(l::add);
|
||||
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