From b3c20eb661457f331e19bdeff96a6c6b3bfc508e Mon Sep 17 00:00:00 2001 From: Thomas Rubini <74205383+ThomasRubini@users.noreply.github.com> Date: Mon, 6 Jun 2022 16:37:59 +0200 Subject: [PATCH 1/2] mise a jour de la CI pour ajouter le jar en tant qu'artefact de sortie --- .github/workflows/maven.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 7c89f78..3329c9f 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -1,4 +1,4 @@ -name: Java CI with Maven +name: Java CI/CD with Maven on: - push @@ -15,7 +15,13 @@ jobs: distribution: 'zulu' java-package: 'jdk+fx' cache: maven - - name: Run headless test + - name: Build and run headless test uses: GabrielBB/xvfb-action@v1 with: run: mvn -B package --file pom.xml + + - name: Upload resulting executable + uses: actions/upload-artifact@v2 + with: + name: jar file + path: target/sae201-1.0-SNAPSHOT.jar From 98d2970b5e39930f6507cadce15031d5084881d8 Mon Sep 17 00:00:00 2001 From: Thomas Rubini <74205383+ThomasRubini@users.noreply.github.com> Date: Tue, 7 Jun 2022 08:35:39 +0200 Subject: [PATCH 2/2] =?UTF-8?q?D=C3=A9but=20des=20tests=20unitaires=20du?= =?UTF-8?q?=20backend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/univ_amu/iut/FranceMain.java | 6 +- .../univ_amu/iut/dao/jpa/DAOBaseClassJPA.java | 41 ++++--------- .../univ_amu/iut/dao/jpa/DAOFactoryJPA.java | 25 ++++---- .../fr/univ_amu/iut/model/Discipline.java | 5 +- .../univ_amu/iut/model/RegionAcademique.java | 49 +++++++++------- .../univ_amu/iut/test/DAORessourceTest.java | 8 +-- .../univ_amu/iut/test/DAOThematiqueTest.java | 8 +-- src/main/resources/META-INF/persistence.xml | 19 ++++++- .../java/fr/univ_amu/iut/BackendTest.java | 57 +++++++++++++++++++ 9 files changed, 140 insertions(+), 78 deletions(-) create mode 100644 src/test/java/fr/univ_amu/iut/BackendTest.java diff --git a/src/main/java/fr/univ_amu/iut/FranceMain.java b/src/main/java/fr/univ_amu/iut/FranceMain.java index 5c7c13c..3e62cb4 100644 --- a/src/main/java/fr/univ_amu/iut/FranceMain.java +++ b/src/main/java/fr/univ_amu/iut/FranceMain.java @@ -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); } } diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOBaseClassJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOBaseClassJPA.java index 72ef37b..13f1fcd 100644 --- a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOBaseClassJPA.java +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOBaseClassJPA.java @@ -14,42 +14,25 @@ public abstract class DAOBaseClassJPA implements DAO { } 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; } } diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java index e6a4d63..4751a59 100644 --- a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java @@ -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 void insertAllHelper(DAO dao, Collection 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; diff --git a/src/main/java/fr/univ_amu/iut/model/Discipline.java b/src/main/java/fr/univ_amu/iut/model/Discipline.java index 53a5074..4393540 100644 --- a/src/main/java/fr/univ_amu/iut/model/Discipline.java +++ b/src/main/java/fr/univ_amu/iut/model/Discipline.java @@ -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 toutes() { - return new ArrayList<>(INSTANCES); + return INSTANCES; } public static Discipline getById(int id){ diff --git a/src/main/java/fr/univ_amu/iut/model/RegionAcademique.java b/src/main/java/fr/univ_amu/iut/model/RegionAcademique.java index 2e447f2..fb5d90d 100644 --- a/src/main/java/fr/univ_amu/iut/model/RegionAcademique.java +++ b/src/main/java/fr/univ_amu/iut/model/RegionAcademique.java @@ -15,43 +15,43 @@ public class RegionAcademique implements Serializable { private static List 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; diff --git a/src/main/java/fr/univ_amu/iut/test/DAORessourceTest.java b/src/main/java/fr/univ_amu/iut/test/DAORessourceTest.java index 4323b35..0031db6 100644 --- a/src/main/java/fr/univ_amu/iut/test/DAORessourceTest.java +++ b/src/main/java/fr/univ_amu/iut/test/DAORessourceTest.java @@ -18,13 +18,7 @@ public class DAORessourceTest implements DAORessource { public List findAll() { List 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; diff --git a/src/main/java/fr/univ_amu/iut/test/DAOThematiqueTest.java b/src/main/java/fr/univ_amu/iut/test/DAOThematiqueTest.java index 46d8564..fb60612 100644 --- a/src/main/java/fr/univ_amu/iut/test/DAOThematiqueTest.java +++ b/src/main/java/fr/univ_amu/iut/test/DAOThematiqueTest.java @@ -18,13 +18,7 @@ public class DAOThematiqueTest implements DAOThematique { public List findAll() { List 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; diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index 27c2fb1..427110d 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -7,7 +7,7 @@ - + @@ -15,6 +15,23 @@ + + + + + + + + org.eclipse.persistence.jpa.PersistenceProvider + false + + + + + + + + diff --git a/src/test/java/fr/univ_amu/iut/BackendTest.java b/src/test/java/fr/univ_amu/iut/BackendTest.java new file mode 100644 index 0000000..7ada42e --- /dev/null +++ b/src/test/java/fr/univ_amu/iut/BackendTest.java @@ -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(); + } +} \ No newline at end of file