Merge branch 'master' of https://git.etud.insa-toulouse.fr/el-ouali/PDLA_24
This commit is contained in:
commit
d2c26ec6ed
3 changed files with 174 additions and 46 deletions
|
@ -1,43 +1,21 @@
|
||||||
name: Java CI with Maven
|
image: maven:3.8.3-openjdk-17
|
||||||
on:
|
|
||||||
push:
|
services:
|
||||||
branches: [ "master" ]
|
- mysql:8.0
|
||||||
jobs:
|
|
||||||
build:
|
variables:
|
||||||
runs-on: ubuntu-latest
|
|
||||||
services:
|
|
||||||
mysql:
|
|
||||||
image: mysql:8.0
|
|
||||||
env:
|
|
||||||
MYSQL_ROOT_PASSWORD: root
|
|
||||||
MYSQL_DATABASE: projet_gei_023
|
MYSQL_DATABASE: projet_gei_023
|
||||||
|
MYSQL_ROOT_PASSWORD: root
|
||||||
MYSQL_USER: user
|
MYSQL_USER: user
|
||||||
MYSQL_PASSWORD: ohQu4ood
|
MYSQL_PASSWORD: ohQu4ood
|
||||||
ports:
|
MYSQL_HOST: mysql
|
||||||
- 3306:3306
|
|
||||||
options: >-
|
|
||||||
--health-cmd="mysqladmin ping"
|
|
||||||
--health-interval=10s
|
|
||||||
--health-timeout=5s
|
|
||||||
--health-retries=3
|
|
||||||
|
|
||||||
steps:
|
stages:
|
||||||
- uses: actions/checkout@v3
|
- test
|
||||||
- name: Set up JDK 17
|
|
||||||
uses: actions/setup-java@v3
|
|
||||||
with:
|
|
||||||
java-version: '17'
|
|
||||||
distribution: 'temurin'
|
|
||||||
cache: maven
|
|
||||||
|
|
||||||
- name: Setup MySQL
|
test:
|
||||||
run: |
|
stage: test
|
||||||
sudo systemctl start mysql
|
script:
|
||||||
mysql -e 'CREATE DATABASE IF NOT EXISTS projet_gei_023;' -uroot -proot
|
- mvn test
|
||||||
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';" -uroot -proot
|
only:
|
||||||
|
- master
|
||||||
- name: Build with Maven
|
|
||||||
run: mvn -B package --file pom.xml
|
|
||||||
|
|
||||||
- name: Test with Maven
|
|
||||||
run: mvn test
|
|
95
README.md
Normal file
95
README.md
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
# Application PDLA - Gestion des Demandes Bénévoles
|
||||||
|
|
||||||
|
## Prérequis
|
||||||
|
- Java JDK 11 ou supérieur
|
||||||
|
- Apache Maven 3.6 ou supérieur
|
||||||
|
- Eclipse IDE
|
||||||
|
- Accès aux machines INSA (pour l'exécution sur Linux)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Configuration Eclipse
|
||||||
|
1. Importez le projet dans Eclipse :
|
||||||
|
- File > Import > Maven > Existing Maven Projects
|
||||||
|
- Sélectionnez le dossier racine du projet
|
||||||
|
- Cliquez sur "Finish"
|
||||||
|
|
||||||
|
2. Configuration du build path :
|
||||||
|
- Clic droit sur le projet > Properties
|
||||||
|
- Java Build Path > Libraries
|
||||||
|
- Vérifiez que le JDK est correctement configuré
|
||||||
|
|
||||||
|
### Configuration Maven
|
||||||
|
1. Mettez à jour les dépendances Maven :
|
||||||
|
```bash
|
||||||
|
mvn clean install
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Vérifiez que le fichier `pom.xml` est correctement configuré avec toutes les dépendances nécessaires.
|
||||||
|
|
||||||
|
## Exécution des Tests
|
||||||
|
|
||||||
|
### Dans Eclipse
|
||||||
|
1. Clic droit sur le projet
|
||||||
|
2. Run As > Maven test
|
||||||
|
|
||||||
|
### En ligne de commande (Linux INSA)
|
||||||
|
```bash
|
||||||
|
# Se connecter aux machines INSA
|
||||||
|
ssh votre_login@votre_machine.insa-toulouse.fr
|
||||||
|
|
||||||
|
# Naviguer vers le répertoire du projet
|
||||||
|
cd chemin/vers/votre/projet
|
||||||
|
|
||||||
|
# Exécuter les tests
|
||||||
|
mvn test
|
||||||
|
```
|
||||||
|
|
||||||
|
## Structure du Projet
|
||||||
|
- `src/main/java/` : Code source principal
|
||||||
|
- `controller/` : Contrôleurs de l'application
|
||||||
|
- `database/` : Gestion de la base de données
|
||||||
|
- Classes principales :
|
||||||
|
- BenevoleDemandes*.java
|
||||||
|
- CreateAccountPage.java
|
||||||
|
- LoginPage.java
|
||||||
|
- MenuBenevole.java
|
||||||
|
- SoumettreDemande.java
|
||||||
|
- Validateur.java
|
||||||
|
|
||||||
|
- `src/test/java/` : Tests unitaires et d'intégration
|
||||||
|
- Tests correspondants aux classes principales
|
||||||
|
- Tests de validation
|
||||||
|
- Tests de base de données
|
||||||
|
|
||||||
|
## Exécution de l'Application
|
||||||
|
|
||||||
|
### Dans Eclipse
|
||||||
|
1. Localisez la classe principale
|
||||||
|
2. Clic droit > Run As > Java Application
|
||||||
|
|
||||||
|
### En ligne de commande (Linux INSA)
|
||||||
|
```bash
|
||||||
|
# Compiler et créer le package
|
||||||
|
mvn package
|
||||||
|
|
||||||
|
# Exécuter l'application
|
||||||
|
java -jar target/nom-du-jar.jar
|
||||||
|
```
|
||||||
|
|
||||||
|
## Notes Importantes
|
||||||
|
- Assurez-vous que la base de données est correctement configurée avant l'exécution
|
||||||
|
- Tous les tests doivent passer avant de soumettre des modifications
|
||||||
|
- Utilisez la branche 'master' pour le développement principal
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
L'application inclut plusieurs types de tests :
|
||||||
|
- Tests unitaires pour les composants individuels
|
||||||
|
- Tests d'intégration pour les flux complets
|
||||||
|
- Tests de validation pour les formulaires
|
||||||
|
- Tests de la base de données
|
||||||
|
|
||||||
|
Pour exécuter des tests spécifiques :
|
||||||
|
```bash
|
||||||
|
mvn test -Dtest=NomDuTest
|
||||||
|
```
|
|
@ -16,12 +16,13 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||||
class ValidateurTest {
|
class ValidateurTest {
|
||||||
|
|
||||||
private Validateur validateur;
|
private Validateur validateur;
|
||||||
private int utilisateurId = 1; // utilisateur arbitraire qui va créer les demandes de test
|
private int validateurID = 3; // utilisateur arbitraire qui va valider les demandes de test
|
||||||
|
private int utilisateurID = 1; // utilisateur arbitraire qui va créer les demandes de test
|
||||||
private int demandeID; //on crée manuellment une demande pour les tests (on la supprime après)
|
private int demandeID; //on crée manuellment une demande pour les tests (on la supprime après)
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setUp() {
|
void setUp() {
|
||||||
validateur = new Validateur(utilisateurId);
|
validateur = new Validateur(validateurID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -31,7 +32,7 @@ class ValidateurTest {
|
||||||
String insertSQL = "INSERT INTO demandes_aide (statut, utilisateur_id, benevole_id, description) VALUES (?, ?, ?, ?)";
|
String insertSQL = "INSERT INTO demandes_aide (statut, utilisateur_id, benevole_id, description) VALUES (?, ?, ?, ?)";
|
||||||
PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS);
|
PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS);
|
||||||
insertStatement.setString(1, "soumise");
|
insertStatement.setString(1, "soumise");
|
||||||
insertStatement.setNull(2, utilisateurId);
|
insertStatement.setInt(2, utilisateurID);
|
||||||
insertStatement.setNull(3, java.sql.Types.INTEGER); // Aucun bénévole affecté initialement
|
insertStatement.setNull(3, java.sql.Types.INTEGER); // Aucun bénévole affecté initialement
|
||||||
insertStatement.setString(4, "Demande de test pour JUnit / Test validation");
|
insertStatement.setString(4, "Demande de test pour JUnit / Test validation");
|
||||||
insertStatement.executeUpdate();
|
insertStatement.executeUpdate();
|
||||||
|
@ -90,7 +91,7 @@ class ValidateurTest {
|
||||||
String insertSQL = "INSERT INTO demandes_aide (statut, utilisateur_id, benevole_id, description) VALUES (?, ?, ?, ?)";
|
String insertSQL = "INSERT INTO demandes_aide (statut, utilisateur_id, benevole_id, description) VALUES (?, ?, ?, ?)";
|
||||||
PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS);
|
PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS);
|
||||||
insertStatement.setString(1, "soumise");
|
insertStatement.setString(1, "soumise");
|
||||||
insertStatement.setInt(2, utilisateurId);
|
insertStatement.setInt(2, utilisateurID);
|
||||||
insertStatement.setNull(3, java.sql.Types.INTEGER); // Aucun bénévole affecté initialement
|
insertStatement.setNull(3, java.sql.Types.INTEGER); // Aucun bénévole affecté initialement
|
||||||
insertStatement.setString(4, "Demande de test pour JUnit / Test rejet");
|
insertStatement.setString(4, "Demande de test pour JUnit / Test rejet");
|
||||||
insertStatement.executeUpdate();
|
insertStatement.executeUpdate();
|
||||||
|
@ -142,4 +143,58 @@ class ValidateurTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testLoadDemandesEnAttente() {
|
||||||
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
|
// Créer trois demandes tests
|
||||||
|
String desc1 = "Demande de test 1 pour JUnit / Test loadDemandesEnAttente";
|
||||||
|
String desc2 = "Demande de test 2 pour JUnit / Test loadDemandesEnAttente";
|
||||||
|
String desc3 = "Demande de test 3 pour JUnit / Test loadDemandesEnAttente";
|
||||||
|
|
||||||
|
// Insertion de la première demande
|
||||||
|
String insertSQL = "INSERT INTO demandes_aide (statut, utilisateur_id, benevole_id, description) VALUES (?, ?, ?, ?)";
|
||||||
|
PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS);
|
||||||
|
insertStatement.setString(1, "soumise");
|
||||||
|
insertStatement.setInt(2, utilisateurID);
|
||||||
|
insertStatement.setNull(3, java.sql.Types.INTEGER); //pas de benevole attribué
|
||||||
|
insertStatement.setString(4, desc1);
|
||||||
|
insertStatement.executeUpdate();
|
||||||
|
|
||||||
|
ResultSet generatedKeys = insertStatement.getGeneratedKeys();
|
||||||
|
if (generatedKeys.next()) {
|
||||||
|
demandeID = generatedKeys.getInt(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insertion des autres demandes
|
||||||
|
insertStatement.setString(4, desc2);
|
||||||
|
insertStatement.executeUpdate();
|
||||||
|
insertStatement.setString(4, desc3);
|
||||||
|
insertStatement.executeUpdate();
|
||||||
|
|
||||||
|
// Charger les demandes dans la table
|
||||||
|
Method loadDemandesEnAttenteMethod = Validateur.class.getDeclaredMethod("loadDemandesEnAttente");
|
||||||
|
loadDemandesEnAttenteMethod.setAccessible(true);
|
||||||
|
loadDemandesEnAttenteMethod.invoke(validateur);
|
||||||
|
|
||||||
|
// Vérifier que les descriptions sont bien chargées
|
||||||
|
int lastRow = validateur.getTable().getRowCount()-1;
|
||||||
|
String desc_actual = (String) validateur.getTableModel().getValueAt(lastRow-2, 1) +
|
||||||
|
(String) validateur.getTableModel().getValueAt(lastRow-1, 1) +
|
||||||
|
(String) validateur.getTableModel().getValueAt(lastRow, 1);
|
||||||
|
|
||||||
|
String desc_expected = desc1 + desc2 + desc3;
|
||||||
|
assertEquals(desc_expected, desc_actual, "Les descriptions doivent correspondre");
|
||||||
|
|
||||||
|
// Nettoyage des données de test
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
String deleteSQL = "DELETE FROM demandes_aide WHERE id = ?";
|
||||||
|
PreparedStatement deleteStatement = connection.prepareStatement(deleteSQL);
|
||||||
|
deleteStatement.setInt(1, demandeID + i);
|
||||||
|
deleteStatement.executeUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SQLException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue