Suite des tests du backend

This commit is contained in:
Thomas Rubini 2022-06-07 11:46:00 +02:00
parent 6f8a39f00d
commit af72f48e39
No known key found for this signature in database
GPG Key ID: C7D287C8C1CAC373
9 changed files with 101 additions and 38 deletions

View File

@ -20,6 +20,11 @@
</properties>
<dependencies>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.16.1</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>

View File

@ -9,5 +9,5 @@ import java.util.List;
public interface DAOUsage extends DAO<Usage>{
List<Usage> findByCriterias(Thematique thematique, Discipline discipline, Academie academie);
List<Usage> findByName(String substring);
List<Usage> findByNamePart(String substring);
}

View File

@ -40,9 +40,9 @@ public class DAOUsageJPA extends DAOBaseClassJPA<Usage> implements DAOUsage {
@Override
public List<Usage> findByName(String substring) {
TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findByName", Usage.class);
query.setParameter("substring", "%"+substring+"%");
public List<Usage> findByNamePart(String substring) {
TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findByNamePart", Usage.class);
query.setParameter("substring", "%"+substring.toLowerCase()+"%");
return query.getResultList();
}
}

View File

@ -15,21 +15,21 @@ public class Discipline implements Serializable {
private static final List<Discipline> INSTANCES = new ArrayList<>();
@Transient
public static Discipline Toutes = new Discipline("Toutes disciplines");
@Transient
public static Discipline HistoireGeographie = new Discipline("Histoire-géographie");
@Transient
public static Discipline PhysiqueChimie = new Discipline("Physique-chimie");
@Transient
public static Discipline ScienceEtVieDeLaTerre = new Discipline("SVT");
@Transient
public static Discipline Technologie = new Discipline("Technologie");
@Transient
public static Discipline Francais = new Discipline("Français");
@Transient
public static Discipline EconomieGestion = new Discipline("Économie Gestion");
@Transient
public static Discipline LangueVivante = new Discipline("Langue Vivante");
@Id

View File

@ -26,8 +26,7 @@ public class Ressource implements Serializable {
try{
return new URL(url);
}catch(MalformedURLException e){
e.printStackTrace();
return null;
throw new RuntimeException(e);
}
}

View File

@ -9,7 +9,7 @@ import java.util.List;
@NamedQueries({
@NamedQuery(name = "Usage.findAll", query = "SELECT p FROM Usage p"),
@NamedQuery(name = "Usage.findById", query = "SELECT p FROM Usage p WHERE p.id = :id"),
@NamedQuery(name = "Usage.findByName", query = "SELECT p FROM Usage p WHERE p.nom LIKE :substring"),
@NamedQuery(name = "Usage.findByNamePart", query = "SELECT p FROM Usage p WHERE LOWER(p.nom) LIKE :substring"),
@NamedQuery(name = "Usage.findByCriterias", query = "SELECT p FROM Usage p WHERE" +
"(:thematique is null or :thematique=p.thematique)" +
"AND (:discipline is null or :discipline=p.discipline)"+

View File

@ -57,7 +57,7 @@ public class DAOUsageTest implements DAOUsage{
}
@Override
public List<Usage> findByName(String substring) {
public List<Usage> findByNamePart(String substring) {
// TODO Auto-generated method stub
return null;
}

View File

@ -7,7 +7,7 @@
<properties>
<!-- database connection properties -->
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://lagrottedeneotaku.hopto.org:6776/devapp"/>
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost/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)-->
@ -27,7 +27,8 @@
<properties>
<!-- database connection properties -->
<property name="jakarta.persistence.jdbc.url" value="jdbc:derby:memory:devapp;create=true"/>
<property name="jakarta.persistence.jdbc.driver" value="org.sqlite.JDBC"/>
<property name="jakarta.persistence.jdbc.url" value="jdbc:sqlite::memory:"/>
<property name="eclipselink.ddl-generation.output-mode" value="database"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>

View File

@ -1,17 +1,12 @@
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.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 {
@ -22,11 +17,31 @@ public class BackendTest {
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.setNom("Premier usage");
usage.addActeur(new Acteur("Thomas", "Developpeur back-end"));
usage.addActeur(new Acteur("Djalim", "Developpeur Linux"));
usage.addRessource(new Ressource("Google", "https://google.com", "Site web"));
usage.setDiscipline(new Discipline("Informatique"));
usage.setThematique(Thematique.ExpressionOrale);
usage.setDiscipline(Discipline.Francais);
daoFactory.createDAOUsage().insert(usage);
usage = new Usage();
usage.setNom("Second usage");
usage.addActeur(new Acteur("Lucas", "Hacker professionnel"));
usage.addRessource(new Ressource("Google", "https://google.com", "Site web"));
usage.addRessource(new Ressource("Stackoverflow", "http://stackoverflow.com", "Site web"));
usage.setDiscipline(Discipline.Francais);
usage.setThematique(Thematique.ClasseInversee);
daoFactory.createDAOUsage().insert(usage);
usage = new Usage();
usage.setNom("Troisieme usage");
usage.addActeur(new Acteur("Lucas", "Beta testeur"));
usage.setDiscipline(Discipline.PhysiqueChimie);
usage.setThematique(Thematique.CreationNumerique);
daoFactory.createDAOUsage().insert(usage);
}
@ -43,15 +58,58 @@ public class BackendTest {
@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();
assertThat(daoFactory.createDAOThematique().findAll()).contains(Thematique.EcoleInclusive);
}
}
@Test
public void disciplines_contains_svt() {
assertThat(daoFactory.createDAODiscipline().findAll()).contains(Discipline.ScienceEtVieDeLaTerre);
}
@Test
public void disciplines_does_not_contains_uninserted() {
assertThat(daoFactory.createDAODiscipline().findAll()).doesNotContain(new Discipline("Bienséance"));
}
@Test
public void usage_find_name_part() {
var list = daoFactory.createDAOUsage().findByNamePart("Premier");
assertThat(list.size()).isEqualTo(1);
assertThat(list.get(0).getNom()).isEqualTo("Premier usage");
}
@Test
public void usage_find_name_part_with_case() {
var list = daoFactory.createDAOUsage().findByNamePart("pReMiEr");
assertThat(list.size()).isEqualTo(1);
assertThat(list.get(0).getNom()).isEqualTo("Premier usage");
}
@Test
public void usage_find_by_thematique() {
var list = daoFactory.createDAOUsage().findByCriterias(Thematique.ExpressionOrale, null, null);
assertThat(list.size()).isEqualTo(1);
assertThat(list.get(0).getNom()).isEqualTo("Premier usage");
}
@Test
public void usage_find_by_discipline(){
var list = daoFactory.createDAOUsage().findByCriterias(null, Discipline.Francais, null);
assertThat(list.size()).isEqualTo(2);
assertThat(list.get(0).getNom()).isEqualTo("Premier usage");
assertThat(list.get(1).getNom()).isEqualTo("Second usage");
}
@Test
public void usage_find_by_thematique_and_discipline(){
var list = daoFactory.createDAOUsage().findByCriterias(Thematique.ClasseInversee, Discipline.Francais, null);
assertThat(list.size()).isEqualTo(1);
assertThat(list.get(0).getNom()).isEqualTo("Second usage");
}
@Test
public void should_not_insert_again(){
daoFactory.createDAOThematique().insert(Thematique.ExpressionOrale);
daoFactory.createDAOThematique().insert(Thematique.ExpressionOrale);
}
}