test: added initial test file mainly definitions and descritions of tests haven't finshed
This commit is contained in:
parent
676f1204cb
commit
55112c8508
@ -0,0 +1,249 @@
|
|||||||
|
package enseirb.myinpulse;
|
||||||
|
|
||||||
|
import static enseirb.myinpulse.model.ProjectDecisionValue.*;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.ArgumentMatchers.endsWith;
|
||||||
|
|
||||||
|
import enseirb.myinpulse.model.Administrator;
|
||||||
|
import enseirb.myinpulse.model.Entrepreneur;
|
||||||
|
import enseirb.myinpulse.model.Project;
|
||||||
|
import enseirb.myinpulse.model.Appointment;
|
||||||
|
|
||||||
|
import enseirb.myinpulse.service.SharedApiService;
|
||||||
|
import enseirb.myinpulse.service.database.AdministratorService;
|
||||||
|
import enseirb.myinpulse.service.database.EntrepreneurService;
|
||||||
|
import enseirb.myinpulse.service.database.ProjectService;
|
||||||
|
|
||||||
|
import org.aspectj.lang.annotation.After;
|
||||||
|
import org.checkerframework.checker.units.qual.kmPERh;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
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.time.LocalTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@Transactional
|
||||||
|
public class SharedApiServiceTest {
|
||||||
|
|
||||||
|
@Autowired private SharedApiService sharedApiService;
|
||||||
|
|
||||||
|
@Autowired private ProjectService projectService;
|
||||||
|
@Autowired private AdministratorService adminService;
|
||||||
|
@Autowired private EntrepreneurService entrepreneurService;
|
||||||
|
|
||||||
|
private static Administrator functional_administrator;
|
||||||
|
private static Entrepreneur functional_entrepreneur;
|
||||||
|
private static Project functional_project;
|
||||||
|
|
||||||
|
static private Entrepreneur empty_entrepreneur;
|
||||||
|
static private Administrator empty_administrator;
|
||||||
|
static private Project empty_Project;
|
||||||
|
|
||||||
|
|
||||||
|
private static Administrator getTestAdmin(String name) {
|
||||||
|
return new Administrator(
|
||||||
|
name,
|
||||||
|
name,
|
||||||
|
name+"@example.com",
|
||||||
|
"seconday@example.com",
|
||||||
|
"0123456789");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Entrepreneur getTestEntrpreneur(String name) {
|
||||||
|
return new Entrepreneur(
|
||||||
|
name,
|
||||||
|
name,
|
||||||
|
name+"@example.com",
|
||||||
|
"seconday@example.com",
|
||||||
|
"0123456789",
|
||||||
|
"School",
|
||||||
|
"Course",
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Project getTestProject(String name, Administrator admin) {
|
||||||
|
return new Project(name, null, LocalDate.now(), ACTIVE, admin);
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
private void setup(
|
||||||
|
@Autowired AdministratorService administratorService,
|
||||||
|
@Autowired ProjectService projectService,
|
||||||
|
@Autowired EntrepreneurService entrepreneurService) {
|
||||||
|
|
||||||
|
empty_entrepreneur = entrepreneurService.addEntrepreneur(null);
|
||||||
|
empty_administrator = administratorService.addAdministrator(null);
|
||||||
|
empty_Project = projectService.addNewProject(new Project());
|
||||||
|
|
||||||
|
functional_administrator = administratorService.addAdministrator(getTestAdmin("functional_administrator"));
|
||||||
|
functional_entrepreneur = entrepreneurService.addEntrepreneur(getTestEntrpreneur("functional_entrepreneur"));
|
||||||
|
functional_project = projectService.addNewProject(getTestProject("functional_project", functional_administrator));
|
||||||
|
functional_project.updateListEntrepreneurParticipation(functional_entrepreneur);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
private void cleanup() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T> List<T> IterableToList(Iterable<T> iterable) {
|
||||||
|
List<T> l = new ArrayList<>();
|
||||||
|
iterable.forEach(l::add);
|
||||||
|
return l;
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T> boolean matchesIgnoringId(T expected, T actual) {
|
||||||
|
/*
|
||||||
|
Implementing custom comparison logic depending on the actual type of T,
|
||||||
|
Can't think of a better way than changing the model and overriding equals
|
||||||
|
*/
|
||||||
|
if (expected instanceof Appointment && actual instanceof Appointment) {
|
||||||
|
Appointment e = (Appointment) expected;
|
||||||
|
Appointment a = (Appointment) actual;
|
||||||
|
return e.getAppointmentDate().equals(a.getAppointmentDate())
|
||||||
|
&& e.getAppointmentTime().equals(a.getAppointmentTime())
|
||||||
|
&& e.getAppointmentDuration().equals(a.getAppointmentDuration())
|
||||||
|
&& e.getAppointmentDuration().equals(a.getAppointmentPlace());
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new IllegalArgumentException("Unsupported type for comparison");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private <T, K> void TestIfInIterable(Iterable<T> iterable, K expected) {
|
||||||
|
List<T> l = IterableToList(iterable);
|
||||||
|
Boolean exists = l.stream()
|
||||||
|
.anyMatch(e -> matchesIgnoringId(expected, e));
|
||||||
|
assertTrue(exists, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests if an appointement made by the user himself and the users associated with appointment,
|
||||||
|
* the appoitement date, time, etc are correct.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testCreateAppointmentRequest_Users() {
|
||||||
|
/*
|
||||||
|
* Creating the setup for the test
|
||||||
|
*/
|
||||||
|
LocalDate date = LocalDate.parse("02-05-2025");
|
||||||
|
LocalTime duration = LocalTime.parse("00:15:30");
|
||||||
|
LocalTime time = LocalTime.parse("10:20:00");
|
||||||
|
String appointmentPlace = "salleInpulse";
|
||||||
|
String appointmentSubject = "Titanic";
|
||||||
|
Appointment appointment = new Appointment( new Long(0), date, time, duration, appointmentPlace, appointmentSubject);
|
||||||
|
sharedApiService.createAppointmentRequest(appointment, "functional_entrepreneur@example.com");
|
||||||
|
/*
|
||||||
|
* fetching the values and testing them
|
||||||
|
*/
|
||||||
|
Iterable<Appointment> appointments = sharedApiService.getAppointmentsByProjectId(functional_project.getIdProject(), "functional_entrepreneur@example.com");
|
||||||
|
List<Appointment> appointment_list = IterableToList(appointments);
|
||||||
|
|
||||||
|
|
||||||
|
assertEquals(date, date);
|
||||||
|
assertEquals(time, time);
|
||||||
|
assertEquals(appointmentPlace, appointmentPlace);
|
||||||
|
assertEquals(appointmentSubject, appointmentSubject);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests the edge cases:
|
||||||
|
* - an appointement made by a user but has no participants.
|
||||||
|
* - the inputed dates for appointments are not older than current date.
|
||||||
|
* - date or time format is wrong.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testCreateAppointmentRequest_EdgeCases() {
|
||||||
|
assertEquals(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests if an admin and entrepreneur with no prior appointments
|
||||||
|
* have no appointments.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testGetAppointement_EmptyUser() {
|
||||||
|
assertEquals(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests if an admin and entrepreneur indepedant of eachother with no prior appointments,
|
||||||
|
* each have exactly one appointment an appointment after .
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testGetAppointement_NonEmptyUser() {
|
||||||
|
assertEquals(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests if an admin and entrepreneur both bound by the same project
|
||||||
|
* have the same appointment.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testGetAppointement_UsersHaveSameAppointement() {
|
||||||
|
assertEquals(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests if in empty project has no sectionCells
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testGetSectionCells_EmptyProject() {
|
||||||
|
assertEquals(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests if in a project with no prior sectionCells that is given exactly
|
||||||
|
* one sectionCell has:
|
||||||
|
* - exactly one section cell.
|
||||||
|
* - the cell given back has the correct information.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testGetSectionCells_NonEmptyProject() {
|
||||||
|
assertEquals(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests the edge cases:
|
||||||
|
* - sectionId is in {1, ... , 8}.
|
||||||
|
* - modificationDate is not newer than the current date.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testGetSectionCells_EdgeCases() {
|
||||||
|
assertEquals(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests if:
|
||||||
|
* - handls a non existing projectId correctly.
|
||||||
|
* - returns the correct admin associated with project by id
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testGetAdminByProjectId() {
|
||||||
|
assertEquals(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests if:
|
||||||
|
* - handls non existing projectId correctly.
|
||||||
|
* - returns the correct entrepreneurs associated with the project.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testGetEntrepreneursByProjectId() {
|
||||||
|
assertEquals(0, 0);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user