Compare commits

...

4 Commits

Author SHA1 Message Date
Pierre Tellier
ef964c4d35 fix: removed id + renamed mainEmail to primaryEmail everywhere
All checks were successful
Format / formatting (push) Successful in 8s
Build / build (push) Successful in 28s
CI / build (push) Successful in 11s
2025-03-11 13:02:17 +01:00
Pierre Tellier
5608b12f84 fix: removed id + renamed mainEmail to primaryEmail everywhere 2025-03-11 13:01:53 +01:00
Pierre Tellier
467babab79 fix: removed id + renamed mainEmail to primaryEmail everywhere 2025-03-11 13:01:28 +01:00
Pierre Tellier
a2e2395cc2 feat: added new tests and coverage report 2025-03-11 13:00:38 +01:00
9 changed files with 86 additions and 17 deletions

View File

@ -2,6 +2,7 @@ plugins {
id 'java' id 'java'
id 'org.springframework.boot' version '3.4.2' id 'org.springframework.boot' version '3.4.2'
id 'io.spring.dependency-management' version '1.1.7' id 'io.spring.dependency-management' version '1.1.7'
id 'jacoco'
} }
group = 'enseirb' group = 'enseirb'
@ -36,3 +37,22 @@ dependencies {
tasks.named('test') { tasks.named('test') {
useJUnitPlatform() useJUnitPlatform()
} }
test {
finalizedBy jacocoTestReport // report is always generated after tests run
}
jacocoTestReport {
dependsOn test // tests are required to run before generating the report
reports {
xml.required = false
csv.required = false
html.outputLocation = layout.buildDirectory.dir('jacocoHtml')
}
}
jacoco {
toolVersion = "0.8.12"
reportsDirectory = layout.buildDirectory.dir('customJacocoReportDir')
}

View File

@ -34,9 +34,9 @@ public class Administrator extends User {
public Administrator( public Administrator(
String userSurname, String userSurname,
String username, String username,
String mainMail, String primaryMail,
String secondaryMail, String secondaryMail,
String phoneNumber) { String phoneNumber) {
super(null, userSurname, username, mainMail, secondaryMail, phoneNumber); super(null, userSurname, username, primaryMail, secondaryMail, phoneNumber);
} }
} }

View File

@ -40,13 +40,13 @@ public class Entrepreneur extends User {
Long idUser, Long idUser,
String userSurname, String userSurname,
String username, String username,
String mainMail, String primaryMail,
String secondaryMail, String secondaryMail,
String phoneNumber, String phoneNumber,
String school, String school,
String course, String course,
boolean sneeStatus) { boolean sneeStatus) {
super(idUser, userSurname, username, mainMail, secondaryMail, phoneNumber); super(idUser, userSurname, username, primaryMail, secondaryMail, phoneNumber);
this.school = school; this.school = school;
this.course = course; this.course = course;
this.sneeStatus = sneeStatus; this.sneeStatus = sneeStatus;

View File

@ -39,16 +39,16 @@ public class Project {
public Project() {} public Project() {}
public Project( public Project(
Long idProject,
String projectName, String projectName,
byte[] logo, byte[] logo,
LocalDate creationDate, LocalDate creationDate,
String projectStatus) { String projectStatus,
this.idProject = idProject; Administrator projectAdministrator) {
this.projectName = projectName; this.projectName = projectName;
this.logo = logo; this.logo = logo;
this.creationDate = creationDate; this.creationDate = creationDate;
this.projectStatus = projectStatus; this.projectStatus = projectStatus;
this.projectAdministrator = projectAdministrator;
} }
public Long getIdProject() { public Long getIdProject() {

View File

@ -71,8 +71,8 @@ public class User {
return primaryMail; return primaryMail;
} }
public void setPrimaryMail(String mainMail) { public void setPrimaryMail(String primaryMail) {
this.primaryMail = mainMail; this.primaryMail = primaryMail;
} }
public String getSecondaryMail() { public String getSecondaryMail() {

View File

@ -5,10 +5,13 @@ import enseirb.myinpulse.model.Administrator;
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 AdministratorRepository extends JpaRepository<Administrator, Long> { public interface AdministratorRepository extends JpaRepository<Administrator, Long> {
/* @Query("SELECT a from Administrators a") /* @Query("SELECT a from Administrators a")
Administrator findAllAdministrator(); */ Administrator findAllAdministrator(); */
Optional<Administrator> findByPrimaryMail(String PrimaryMail);
} }

View File

@ -37,6 +37,17 @@ public class AdministratorService {
return administrator.get(); return administrator.get();
} }
public Administrator getAdministratorByPrimaryMain(String primaryMail) {
Optional<Administrator> administrator =
this.administratorRepository.findByPrimaryMail(primaryMail);
if (administrator.isEmpty()) {
logger.error("No administrator found with the mail {}", primaryMail);
throw new ResponseStatusException(
HttpStatus.NOT_FOUND, "Cet administrateur n'existe pas");
}
return administrator.get();
}
public Administrator addAdministrator(Administrator administrator) { public Administrator addAdministrator(Administrator administrator) {
return this.administratorRepository.save(administrator); return this.administratorRepository.save(administrator);
} }

View File

@ -53,7 +53,7 @@ public class UserService {
@PathVariable Long id, @PathVariable Long id,
String userSurname, String userSurname,
String userName, String userName,
String mainMail, String primaryMail,
String secondaryMail, String secondaryMail,
String phoneNumber) { String phoneNumber) {
Optional<User> user = userRepository.findById(id); Optional<User> user = userRepository.findById(id);
@ -67,8 +67,8 @@ public class UserService {
if (userSurname != null) { if (userSurname != null) {
user.get().setUserSurname(userSurname); user.get().setUserSurname(userSurname);
} }
if (mainMail != null) { if (primaryMail != null) {
user.get().setPrimaryMail(mainMail); user.get().setPrimaryMail(primaryMail);
} }
if (secondaryMail != null) { if (secondaryMail != null) {
user.get().setSecondaryMail(secondaryMail); user.get().setSecondaryMail(secondaryMail);

View File

@ -7,6 +7,7 @@ import enseirb.myinpulse.model.Administrator;
import enseirb.myinpulse.model.Project; import enseirb.myinpulse.model.Project;
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 org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -15,6 +16,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.server.ResponseStatusException; import org.springframework.web.server.ResponseStatusException;
import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -24,22 +26,44 @@ public class AdminApiServiceTest {
@Autowired private AdminApiService adminApiService; @Autowired private AdminApiService adminApiService;
@BeforeAll @BeforeAll
static void setup(@Autowired AdministratorService administratorService) { static void setup(
@Autowired AdministratorService administratorService,
@Autowired ProjectService projectService) {
administratorService.addAdministrator( administratorService.addAdministrator(
new Administrator( new Administrator(
"admin", "admin", "testAdmin@example.com", "testAdmin@example.com", "")); "admin",
"admin",
"testAdminEmpty@example.com",
"testAdmin@example.com",
""));
administratorService.addAdministrator(
new Administrator(
"admin2",
"admin2",
"testAdminFull@example.com",
"testAdmin@example.com",
""));
projectService.addNewProject(
new Project(
"sampleProjectAdminApiService",
null,
LocalDate.now(),
"ONGOING",
administratorService.getAdministratorByPrimaryMain(
"testAdminFull@example.com")));
} }
@Test @Test
void getProjectOfAdminIsEmpty() throws Exception { void getProjectOfAdminIsEmpty() {
Iterable<Project> projects = adminApiService.getProjectsOfAdmin("testAdmin@example.com"); Iterable<Project> projects =
adminApiService.getProjectsOfAdmin("testAdminEmpty@example.com");
List<Project> l = new ArrayList<>(); List<Project> l = new ArrayList<>();
projects.forEach(l::add); projects.forEach(l::add);
assertEquals(0, l.size()); assertEquals(0, l.size());
} }
@Test @Test
void getProjectOfInexistantAdminFails() throws Exception { void getProjectOfInexistantAdminFails() {
String nonExistentAdminEmail = "testInexistantAdmin@example.com"; String nonExistentAdminEmail = "testInexistantAdmin@example.com";
assertThrows( assertThrows(
@ -48,4 +72,15 @@ public class AdminApiServiceTest {
adminApiService.getProjectsOfAdmin(nonExistentAdminEmail); adminApiService.getProjectsOfAdmin(nonExistentAdminEmail);
}); });
} }
@Test
void getProjectOfAdminNotEmpty() {
Iterable<Project> projects =
adminApiService.getProjectsOfAdmin("testAdminFull@example.com");
List<Project> l = new ArrayList<>();
projects.forEach(l::add);
assertEquals(1, l.size());
Project p = l.getFirst();
assertEquals(p.getProjectName(), "sampleProjectAdminApiService");
}
} }