Début des tests unitaires du backend

This commit is contained in:
Thomas Rubini 2022-06-07 08:35:39 +02:00
parent eea1d628e8
commit 98d2970b5e
No known key found for this signature in database
GPG Key ID: C7D287C8C1CAC373
9 changed files with 140 additions and 78 deletions

View File

@ -1,5 +1,8 @@
package fr.univ_amu.iut;
import fr.univ_amu.iut.dao.factory.DAOFactoryProducer;
import fr.univ_amu.iut.dao.factory.DAOType;
import fr.univ_amu.iut.model.RegionAcademique;
import fr.univ_amu.iut.view.map.AcademiePath;
import fr.univ_amu.iut.view.map.France;
import fr.univ_amu.iut.view.map.FranceBuilder;
@ -43,6 +46,7 @@ public class FranceMain extends Application {
}
public static void main(String[] args) {
launch(args);
DAOFactoryProducer.getFactory(DAOType.JPA).createDAOUsage();
// launch(args);
}
}

View File

@ -14,42 +14,25 @@ public abstract class DAOBaseClassJPA<T> implements DAO<T> {
}
public boolean insert(T etudiant) {
try{
entityManager.getTransaction().begin();
entityManager.persist(etudiant);
entityManager.getTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
entityManager.getTransaction().begin();
entityManager.persist(etudiant);
entityManager.getTransaction().commit();
return true;
}
public boolean update(T obj) {
try {
entityManager.getTransaction().begin();
entityManager.merge(obj);
entityManager.getTransaction().commit();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
entityManager.getTransaction().begin();
entityManager.merge(obj);
entityManager.getTransaction().commit();
return true;
}
@Override
public boolean delete(T obj) {
try {
entityManager.getTransaction().begin();
entityManager.remove(obj);
entityManager.getTransaction().commit();
entityManager.getTransaction().begin();
entityManager.remove(obj);
entityManager.getTransaction().commit();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
}

View File

@ -17,34 +17,39 @@ public class DAOFactoryJPA implements DAOFactory {
private EntityManager entityManager;
// Pas sûr de ou initialiser la base de données
/*
On part du principe que les données dans la base de données sont inconnues :
certaines données peuvent être insérées et d'autres non. Nous faisons attention aux erreurs
Nous essayons d'être persistents aux erreurs
*/
private String unitName;
// Nous ne sommes pas sûrs de ou initialiser la base de données
private <T> void insertAllHelper(DAO<T> dao, Collection<T> list){
if(dao.findAll().size()==0){
entityManager.getTransaction().begin();
list.forEach(obj -> entityManager.persist(obj));
System.out.println("LOOP");
System.out.flush();
for(var a : list){
entityManager.persist(a);
}
// list.forEach(obj -> entityManager.persist(obj));
entityManager.getTransaction().commit();
}
}
public DAOFactoryJPA(){
public DAOFactoryJPA(String unitName){
this.unitName = unitName;
insertAllHelper(createDAORegionAcademique(), RegionAcademique.toutes());
insertAllHelper(createDAOAcademie(), Academie.toutes());
insertAllHelper(createDAOThematique(), Thematique.toutes());
insertAllHelper(createDAODiscipline(), Discipline.toutes());
}
public DAOFactoryJPA(){
this("gestionUsagesPU");
}
public EntityManager getEntityManager() {
if(entityManager == null){
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("gestionUsagesPU");
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(unitName);
entityManager = entityManagerFactory.createEntityManager();
}
return entityManager;

View File

@ -40,16 +40,15 @@ public class Discipline implements Serializable {
String nom;
public Discipline() {
INSTANCES.add(this);
}
public Discipline(String nom) {
this();
this.nom = nom;
INSTANCES.add(this);
}
public static List<Discipline> toutes() {
return new ArrayList<>(INSTANCES);
return INSTANCES;
}
public static Discipline getById(int id){

View File

@ -15,43 +15,43 @@ public class RegionAcademique implements Serializable {
private static List<RegionAcademique> INSTANCES = new ArrayList<>();
@Transient
public static RegionAcademique AuvergneRhoneAlpes = new RegionAcademique("Région académique Auvergne-Rhône-Alpes");
@Transient
public static RegionAcademique BourgogneFrancheComte = new RegionAcademique("Région académique Bourgogne-Franche-Comté");
@Transient
public static RegionAcademique Bretagne = new RegionAcademique("Région académique Bretagne");
@Transient
public static RegionAcademique CentreValDeLoire = new RegionAcademique("Région académique Centre-Val de Loire");
@Transient
public static RegionAcademique Corse = new RegionAcademique("Région académique Corse");
@Transient
public static RegionAcademique GrandEst = new RegionAcademique("Région académique Grand Est");
@Transient
public static RegionAcademique Guadeloupe = new RegionAcademique("Région académique Guadeloupe");
@Transient
public static RegionAcademique Guyane = new RegionAcademique("Région académique Guyane");
@Transient
public static RegionAcademique HautsDeFrance = new RegionAcademique("Région académique Hauts-de-France");
@Transient
public static RegionAcademique IleDeFrance = new RegionAcademique("Région académique Île-de-France");
@Transient
public static RegionAcademique Martinique = new RegionAcademique("Région académique Martinique");
@Transient
public static RegionAcademique Normandie = new RegionAcademique("Région académique Normandie");
@Transient
public static RegionAcademique NouvelleAquitaine = new RegionAcademique("Région académique Nouvelle-Aquitaine");
@Transient
public static RegionAcademique Occitanie = new RegionAcademique("Région académique Occitanie");
@Transient
public static RegionAcademique PaysDeLaLoire = new RegionAcademique("Région académique Pays de la Loire");
@Transient
public static RegionAcademique ProvenceAlpesCoteDAzur = new RegionAcademique("Région académique Provence-Alpes-Côte d'Azur");
@Transient
public static RegionAcademique Reunion = new RegionAcademique("Région académique La Réunion");
@Transient
public static RegionAcademique Mayotte = new RegionAcademique("Région académique Mayotte");
@Id
@GeneratedValue
int id;
@ -60,10 +60,11 @@ public class RegionAcademique implements Serializable {
String nom;
public RegionAcademique() {
INSTANCES.add(this);
}
public RegionAcademique(String nom) {
this();
INSTANCES.add(this);
this.nom = nom;
}
@ -87,6 +88,14 @@ public class RegionAcademique implements Serializable {
}
@Override
public String toString() {
return "RegionAcademique{" +
"id=" + id +
", nom='" + nom + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;

View File

@ -18,13 +18,7 @@ public class DAORessourceTest implements DAORessource {
public List<Ressource> findAll() {
List<Ressource> liste = new ArrayList<>();
for (int i = 0; i < 12; i++){
URL url = null;
try {
url = new URL("http://google.com");
} catch (MalformedURLException e) {
e.printStackTrace();
}
Ressource ressource = new Ressource("google", url, "site web");
Ressource ressource = new Ressource("google", "http://google.com", "site web");
liste.add(ressource);
}
return liste;

View File

@ -18,13 +18,7 @@ public class DAOThematiqueTest implements DAOThematique {
public List<Thematique> findAll() {
List<Thematique> liste = new ArrayList<>();
for (int i = 0; i < 12; i++){
URL url = null;
try {
url = new URL("http://google.com");
} catch (MalformedURLException e) {
e.printStackTrace();
}
Thematique thematique = new Thematique(String.valueOf(i));
Thematique thematique = new Thematique("Thematique n° "+i);
liste.add(thematique);
}
return liste;

View File

@ -7,7 +7,7 @@
<properties>
<!-- database connection properties -->
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/devapp"/>
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://lagrottedeneotaku.hopto.org:6776/devapp"/>
<property name="jakarta.persistence.jdbc.user" value="devapp"/>
<property name="jakarta.persistence.jdbc.password" value="7kPoWBgoV5ahygxyXYGzaL"/>
<!-- Nous ne devrions pas commit le mot de passe dans le dépot, mais... je ne pense pas que le projet ne respecte la moindre règle de sécurité de toute facon (pas d'architecture trois tiers)-->
@ -15,6 +15,23 @@
<property name="eclipselink.ddl-generation.output-mode" value="database"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
<!-- configure logging -->
<property name="eclipselink.logging.level" value="INFO"/>
<property name="eclipselink.logging.level.sql" value="FINE"/>
<property name="eclipselink.logging.parameters" value="true"/>
</properties>
</persistence-unit>
<persistence-unit name="gestionUsagesPUTest" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<!-- database connection properties -->
<property name="jakarta.persistence.jdbc.url" value="jdbc:derby:memory:devapp;create=true"/>
<property name="eclipselink.ddl-generation.output-mode" value="database"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
<!-- configure logging -->
<property name="eclipselink.logging.level" value="INFO"/>
<property name="eclipselink.logging.level.sql" value="FINE"/>

View File

@ -0,0 +1,57 @@
package fr.univ_amu.iut;
import fr.univ_amu.iut.dao.factory.DAOFactory;
import fr.univ_amu.iut.dao.jpa.DAOFactoryJPA;
import fr.univ_amu.iut.model.*;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.PrintStream;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
public class BackendTest {
private static DAOFactoryJPA daoFactory;
@BeforeAll
public static void setUp() throws Exception {
daoFactory = new DAOFactoryJPA("gestionUsagesPUTest");
Usage usage = new Usage();
usage.setNom("Nom d'usage n°1");
usage.addActeur(new Acteur("Thomas", "Developpeur"));
usage.addActeur(new Acteur("Djalim", "Developpeur"));
usage.addRessource(new Ressource("Google", "https://google.com", "Site web"));
usage.setDiscipline(new Discipline("Informatique"));
daoFactory.createDAOUsage().insert(usage);
}
@Test
public void beforeeach_works() {
assertThat(true).isTrue();
}
@Test
public void thematiques_are_not_empty() {
assertThat(daoFactory.createDAOThematique().findAll().size()).isNotZero();
}
@Test
public void thematiques_contains_ecole_inclusive() {
// on ne créé pas une fonction findByName car elle ne serait utilisée que pour le test
boolean ecoleInclusiveFound = false;
for(Thematique thematique : daoFactory.createDAOThematique().findAll()) {
if (thematique.getNom().equals("École inclusive")) {
ecoleInclusiveFound = true;
break;
}
}
assertThat(ecoleInclusiveFound).isTrue();
}
}