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
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
MYSQL_DATABASE: projet_gei_023
|
||||
MYSQL_USER: user
|
||||
MYSQL_PASSWORD: ohQu4ood
|
||||
ports:
|
||||
- 3306:3306
|
||||
options: >-
|
||||
--health-cmd="mysqladmin ping"
|
||||
--health-interval=10s
|
||||
--health-timeout=5s
|
||||
--health-retries=3
|
||||
image: maven:3.8.3-openjdk-17
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'temurin'
|
||||
cache: maven
|
||||
|
||||
- name: Setup MySQL
|
||||
run: |
|
||||
sudo systemctl start mysql
|
||||
mysql -e 'CREATE DATABASE IF NOT EXISTS projet_gei_023;' -uroot -proot
|
||||
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';" -uroot -proot
|
||||
|
||||
- name: Build with Maven
|
||||
run: mvn -B package --file pom.xml
|
||||
|
||||
- name: Test with Maven
|
||||
run: mvn test
|
||||
services:
|
||||
- mysql:8.0
|
||||
|
||||
variables:
|
||||
MYSQL_DATABASE: projet_gei_023
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
MYSQL_USER: user
|
||||
MYSQL_PASSWORD: ohQu4ood
|
||||
MYSQL_HOST: mysql
|
||||
|
||||
stages:
|
||||
- test
|
||||
|
||||
test:
|
||||
stage: test
|
||||
script:
|
||||
- mvn test
|
||||
only:
|
||||
- master
|
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 {
|
||||
|
||||
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)
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
validateur = new Validateur(utilisateurId);
|
||||
validateur = new Validateur(validateurID);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -31,7 +32,7 @@ class ValidateurTest {
|
|||
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.setNull(2, utilisateurId);
|
||||
insertStatement.setInt(2, utilisateurID);
|
||||
insertStatement.setNull(3, java.sql.Types.INTEGER); // Aucun bénévole affecté initialement
|
||||
insertStatement.setString(4, "Demande de test pour JUnit / Test validation");
|
||||
insertStatement.executeUpdate();
|
||||
|
@ -90,7 +91,7 @@ class ValidateurTest {
|
|||
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.setInt(2, utilisateurID);
|
||||
insertStatement.setNull(3, java.sql.Types.INTEGER); // Aucun bénévole affecté initialement
|
||||
insertStatement.setString(4, "Demande de test pour JUnit / Test rejet");
|
||||
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