Suite des tests du backend
This commit is contained in:
parent
6f8a39f00d
commit
af72f48e39
5
pom.xml
5
pom.xml
@ -20,6 +20,11 @@
|
|||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.xerial</groupId>
|
||||||
|
<artifactId>sqlite-jdbc</artifactId>
|
||||||
|
<version>3.16.1</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.openjfx</groupId>
|
<groupId>org.openjfx</groupId>
|
||||||
<artifactId>javafx-controls</artifactId>
|
<artifactId>javafx-controls</artifactId>
|
||||||
|
@ -9,5 +9,5 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface DAOUsage extends DAO<Usage>{
|
public interface DAOUsage extends DAO<Usage>{
|
||||||
List<Usage> findByCriterias(Thematique thematique, Discipline discipline, Academie academie);
|
List<Usage> findByCriterias(Thematique thematique, Discipline discipline, Academie academie);
|
||||||
List<Usage> findByName(String substring);
|
List<Usage> findByNamePart(String substring);
|
||||||
}
|
}
|
||||||
|
@ -40,9 +40,9 @@ public class DAOUsageJPA extends DAOBaseClassJPA<Usage> implements DAOUsage {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Usage> findByName(String substring) {
|
public List<Usage> findByNamePart(String substring) {
|
||||||
TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findByName", Usage.class);
|
TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findByNamePart", Usage.class);
|
||||||
query.setParameter("substring", "%"+substring+"%");
|
query.setParameter("substring", "%"+substring.toLowerCase()+"%");
|
||||||
return query.getResultList();
|
return query.getResultList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,21 +15,21 @@ public class Discipline implements Serializable {
|
|||||||
|
|
||||||
private static final List<Discipline> INSTANCES = new ArrayList<>();
|
private static final List<Discipline> INSTANCES = new ArrayList<>();
|
||||||
|
|
||||||
@Transient
|
|
||||||
public static Discipline Toutes = new Discipline("Toutes disciplines");
|
public static Discipline Toutes = new Discipline("Toutes disciplines");
|
||||||
@Transient
|
|
||||||
public static Discipline HistoireGeographie = new Discipline("Histoire-géographie");
|
public static Discipline HistoireGeographie = new Discipline("Histoire-géographie");
|
||||||
@Transient
|
|
||||||
public static Discipline PhysiqueChimie = new Discipline("Physique-chimie");
|
public static Discipline PhysiqueChimie = new Discipline("Physique-chimie");
|
||||||
@Transient
|
|
||||||
public static Discipline ScienceEtVieDeLaTerre = new Discipline("SVT");
|
public static Discipline ScienceEtVieDeLaTerre = new Discipline("SVT");
|
||||||
@Transient
|
|
||||||
public static Discipline Technologie = new Discipline("Technologie");
|
public static Discipline Technologie = new Discipline("Technologie");
|
||||||
@Transient
|
|
||||||
public static Discipline Francais = new Discipline("Français");
|
public static Discipline Francais = new Discipline("Français");
|
||||||
@Transient
|
|
||||||
public static Discipline EconomieGestion = new Discipline("Économie Gestion");
|
public static Discipline EconomieGestion = new Discipline("Économie Gestion");
|
||||||
@Transient
|
|
||||||
public static Discipline LangueVivante = new Discipline("Langue Vivante");
|
public static Discipline LangueVivante = new Discipline("Langue Vivante");
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
|
@ -26,8 +26,7 @@ public class Ressource implements Serializable {
|
|||||||
try{
|
try{
|
||||||
return new URL(url);
|
return new URL(url);
|
||||||
}catch(MalformedURLException e){
|
}catch(MalformedURLException e){
|
||||||
e.printStackTrace();
|
throw new RuntimeException(e);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ import java.util.List;
|
|||||||
@NamedQueries({
|
@NamedQueries({
|
||||||
@NamedQuery(name = "Usage.findAll", query = "SELECT p FROM Usage p"),
|
@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.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" +
|
@NamedQuery(name = "Usage.findByCriterias", query = "SELECT p FROM Usage p WHERE" +
|
||||||
"(:thematique is null or :thematique=p.thematique)" +
|
"(:thematique is null or :thematique=p.thematique)" +
|
||||||
"AND (:discipline is null or :discipline=p.discipline)"+
|
"AND (:discipline is null or :discipline=p.discipline)"+
|
||||||
|
@ -57,7 +57,7 @@ public class DAOUsageTest implements DAOUsage{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Usage> findByName(String substring) {
|
public List<Usage> findByNamePart(String substring) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<!-- database connection 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.user" value="devapp"/>
|
||||||
<property name="jakarta.persistence.jdbc.password" value="7kPoWBgoV5ahygxyXYGzaL"/>
|
<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)-->
|
<!-- 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>
|
<properties>
|
||||||
<!-- database connection 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.output-mode" value="database"/>
|
||||||
<property name="eclipselink.ddl-generation" value="create-tables"/>
|
<property name="eclipselink.ddl-generation" value="create-tables"/>
|
||||||
|
@ -1,17 +1,12 @@
|
|||||||
package fr.univ_amu.iut;
|
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.dao.jpa.DAOFactoryJPA;
|
||||||
import fr.univ_amu.iut.model.*;
|
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.BeforeAll;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import java.io.PrintStream;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
|
|
||||||
public class BackendTest {
|
public class BackendTest {
|
||||||
|
|
||||||
@ -22,11 +17,31 @@ public class BackendTest {
|
|||||||
daoFactory = new DAOFactoryJPA("gestionUsagesPUTest");
|
daoFactory = new DAOFactoryJPA("gestionUsagesPUTest");
|
||||||
|
|
||||||
Usage usage = new Usage();
|
Usage usage = new Usage();
|
||||||
usage.setNom("Nom d'usage n°1");
|
usage.setNom("Premier usage");
|
||||||
usage.addActeur(new Acteur("Thomas", "Developpeur"));
|
usage.addActeur(new Acteur("Thomas", "Developpeur back-end"));
|
||||||
usage.addActeur(new Acteur("Djalim", "Developpeur"));
|
usage.addActeur(new Acteur("Djalim", "Developpeur Linux"));
|
||||||
usage.addRessource(new Ressource("Google", "https://google.com", "Site web"));
|
usage.addRessource(new Ressource("Google", "https://google.com", "Site web"));
|
||||||
usage.setDiscipline(new Discipline("Informatique"));
|
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);
|
daoFactory.createDAOUsage().insert(usage);
|
||||||
}
|
}
|
||||||
@ -43,15 +58,58 @@ public class BackendTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void thematiques_contains_ecole_inclusive() {
|
public void thematiques_contains_ecole_inclusive() {
|
||||||
// on ne créé pas une fonction findByName car elle ne serait utilisée que pour le test
|
assertThat(daoFactory.createDAOThematique().findAll()).contains(Thematique.EcoleInclusive);
|
||||||
|
}
|
||||||
|
|
||||||
boolean ecoleInclusiveFound = false;
|
@Test
|
||||||
for(Thematique thematique : daoFactory.createDAOThematique().findAll()) {
|
public void disciplines_contains_svt() {
|
||||||
if (thematique.getNom().equals("École inclusive")) {
|
assertThat(daoFactory.createDAODiscipline().findAll()).contains(Discipline.ScienceEtVieDeLaTerre);
|
||||||
ecoleInclusiveFound = true;
|
}
|
||||||
break;
|
|
||||||
}
|
@Test
|
||||||
}
|
public void disciplines_does_not_contains_uninserted() {
|
||||||
assertThat(ecoleInclusiveFound).isTrue();
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user