BenevoleDemandesFinaliseesPageTest DONE
Some checks are pending
Java CI with Maven / build (push) Waiting to run
Some checks are pending
Java CI with Maven / build (push) Waiting to run
This commit is contained in:
parent
140f887264
commit
8478672054
1 changed files with 96 additions and 58 deletions
|
@ -4,8 +4,6 @@ import database.DatabaseConnection;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import javax.swing.table.DefaultTableModel;
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
|
@ -13,87 +11,127 @@ import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
||||||
|
|
||||||
class BenevoleDemandesFinaliseesPageTest {
|
class BenevoleDemandesFinaliseesPageTest {
|
||||||
private BenevoleDemandesFinaliseesPage benevoleDemandesFinaliseesPage;
|
private BenevoleDemandesFinaliseesPage page;
|
||||||
private JTable table;
|
private int utilisateurID = 1; // ID utilisateur arbitraire pour le test
|
||||||
private DefaultTableModel tableModel;
|
private int benevoleID = 2; // ID du bénévole pour le test
|
||||||
private int user_besoinID = 1;
|
private int demandeID; // ID de la demande de test
|
||||||
private int benevoleID = 2; // ID fictif de l'utilisateur
|
|
||||||
private int demandeID; // ID fictif de la demande
|
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setUp() throws SQLException {
|
void setUp() throws SQLException {
|
||||||
// Initialiser la benevoleDemandesFinaliseesPage pour les tests
|
// Initialiser la page de test
|
||||||
benevoleDemandesFinaliseesPage = new BenevoleDemandesFinaliseesPage(benevoleID);
|
page = new BenevoleDemandesFinaliseesPage(benevoleID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testPageCreation() {
|
void testLoadDemandesFinalisees() {
|
||||||
// on vérifie que l'instance de la benevoleDemandesFinaliseesPage est créée correctement
|
|
||||||
assertNotNull(benevoleDemandesFinaliseesPage);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testModifierAvisForFinalizedRequest() {
|
|
||||||
//on crée une demande avec le statut 'finalisée' pour tester la méthode modifierAvis(), et avec un avis original
|
|
||||||
try (Connection connection = DatabaseConnection.getConnection()) {
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
String insertSQL = "INSERT INTO demandes_aide (statut, utilisateur_id, benevole_id, description, avis_benevole) VALUES (?, ?, ?, ?, ?)";
|
// Créer trois demandes tests
|
||||||
|
String desc1 = "Demande de test 1 pour JUnit / Test loadDemandesFinalisees";
|
||||||
|
String desc2 = "Demande de test 2 pour JUnit / Test loadDemandesFinalisees";
|
||||||
|
String desc3 = "Demande de test 3 pour JUnit / Test loadDemandesFinalisees";
|
||||||
|
|
||||||
|
// 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);
|
PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS);
|
||||||
insertStatement.setString(1, "finalisée");
|
insertStatement.setString(1, "finalisée");
|
||||||
insertStatement.setInt(2, user_besoinID);
|
insertStatement.setInt(2, utilisateurID);
|
||||||
insertStatement.setInt(3, benevoleID); // Aucun bénévole affecté initialement
|
insertStatement.setInt(3, benevoleID);
|
||||||
insertStatement.setString(4, "Demande de test pour JUnit / Test modif avis_benevole");
|
insertStatement.setString(4, desc1);
|
||||||
insertStatement.setString(5, "Avis_benevole à modifier");
|
|
||||||
insertStatement.executeUpdate();
|
insertStatement.executeUpdate();
|
||||||
|
|
||||||
// Récupération de l'ID généré pour pouvoir le supprimer après
|
|
||||||
ResultSet generatedKeys = insertStatement.getGeneratedKeys();
|
ResultSet generatedKeys = insertStatement.getGeneratedKeys();
|
||||||
if (generatedKeys.next()) {
|
if (generatedKeys.next()) {
|
||||||
demandeID = generatedKeys.getInt(1);
|
demandeID = generatedKeys.getInt(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// on met à jour la table avec la nouvelle demande rajoutée
|
// Insertion des autres demandes
|
||||||
// on utilise une méthode détournée pour accéder à la méthode private 'loadAnciennesDemandes()'
|
insertStatement.setString(4, desc2);
|
||||||
|
insertStatement.executeUpdate();
|
||||||
|
insertStatement.setString(4, desc3);
|
||||||
|
insertStatement.executeUpdate();
|
||||||
|
|
||||||
|
// Charger les demandes dans la table
|
||||||
Method loadDemandesFinaliseesMethod = BenevoleDemandesFinaliseesPage.class.getDeclaredMethod("loadDemandesFinalisees");
|
Method loadDemandesFinaliseesMethod = BenevoleDemandesFinaliseesPage.class.getDeclaredMethod("loadDemandesFinalisees");
|
||||||
loadDemandesFinaliseesMethod.setAccessible(true); // permet d'appeler la méthode même si elle est private
|
loadDemandesFinaliseesMethod.setAccessible(true);
|
||||||
loadDemandesFinaliseesMethod.invoke(benevoleDemandesFinaliseesPage); // on l'appele
|
loadDemandesFinaliseesMethod.invoke(page);
|
||||||
|
|
||||||
//test de modifierAvis(); on sélectionne la dernière ligne de la table car elle correspond à la demande test
|
// Vérifier que les descriptions sont bien chargées
|
||||||
int lastRow = benevoleDemandesFinaliseesPage.getTable().getRowCount()-1;
|
int lastRow = page.getTable().getRowCount() - 1;
|
||||||
benevoleDemandesFinaliseesPage.getTable().setRowSelectionInterval(lastRow, lastRow);
|
String desc_actual = (String) page.getTableModel().getValueAt(lastRow-2, 1) +
|
||||||
|
(String) page.getTableModel().getValueAt(lastRow-1, 1) +
|
||||||
|
(String) page.getTableModel().getValueAt(lastRow, 1);
|
||||||
|
|
||||||
// idem que pour loadAnciennesDemandes() comme modifierAvis() est aussi en private
|
String desc_expected = desc1 + desc2 + desc3;
|
||||||
Method modifierAvisMethod = BenevoleDemandesFinaliseesPage.class.getDeclaredMethod("modifierAvis");
|
assertEquals(desc_expected, desc_actual, "Les descriptions doivent correspondre");
|
||||||
modifierAvisMethod.setAccessible(true); // permet d'appeler la méthode même si elle est private
|
|
||||||
modifierAvisMethod.invoke(benevoleDemandesFinaliseesPage); // on l'appele
|
|
||||||
|
|
||||||
// on attend un moment pour que la base de données se mette à jour
|
// Nettoyage des données de test
|
||||||
Thread.sleep(1000);
|
for (int i = 0; i < 3; i++) {
|
||||||
|
String deleteSQL = "DELETE FROM demandes_aide WHERE id = ?";
|
||||||
String sql = "SELECT avis_benevole FROM demandes_aide WHERE id = ?";
|
PreparedStatement deleteStatement = connection.prepareStatement(deleteSQL);
|
||||||
PreparedStatement statement = connection.prepareStatement(sql);
|
deleteStatement.setInt(1, demandeID + i);
|
||||||
statement.setInt(1, demandeID);
|
deleteStatement.executeUpdate();
|
||||||
ResultSet resultSet = statement.executeQuery();
|
|
||||||
|
|
||||||
String currentAvis = "";
|
|
||||||
if (resultSet.next()) {
|
|
||||||
currentAvis = resultSet.getString("avis_benevole");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
assertNotEquals("Avis_benevole à modifier", currentAvis, "L'avis n'a pas été modifié.");
|
} catch (SQLException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
||||||
|
|
||||||
// Suppression de la demande de test après le test de prendreDemande()
|
|
||||||
String deleteSQL = "DELETE FROM demandes_aide WHERE id = ?";
|
|
||||||
PreparedStatement deleteStatement = connection.prepareStatement(deleteSQL);
|
|
||||||
deleteStatement.setInt(1, demandeID);
|
|
||||||
deleteStatement.executeUpdate();
|
|
||||||
} catch (InterruptedException | InvocationTargetException | NoSuchMethodException | IllegalAccessException |
|
|
||||||
SQLException e) {
|
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
@Test
|
||||||
|
void testModifierAvisForFinalizedRequest() {
|
||||||
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
|
// Créer une demande finalisée de test
|
||||||
|
String insertSQL = "INSERT INTO demandes_aide (statut, utilisateur_id, benevole_id, description, avis_benevole) VALUES (?, ?, ?, ?, ?)";
|
||||||
|
PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS);
|
||||||
|
insertStatement.setString(1, "finalisée");
|
||||||
|
insertStatement.setInt(2, utilisateurID);
|
||||||
|
insertStatement.setInt(3, benevoleID);
|
||||||
|
insertStatement.setString(4, "Demande de test pour modification d'avis");
|
||||||
|
insertStatement.setString(5, "Avis initial");
|
||||||
|
insertStatement.executeUpdate();
|
||||||
|
|
||||||
|
ResultSet generatedKeys = insertStatement.getGeneratedKeys();
|
||||||
|
if (generatedKeys.next()) {
|
||||||
|
demandeID = generatedKeys.getInt(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Charger la demande dans la table
|
||||||
|
Method loadDemandesFinaliseesMethod = BenevoleDemandesFinaliseesPage.class.getDeclaredMethod("loadDemandesFinalisees");
|
||||||
|
loadDemandesFinaliseesMethod.setAccessible(true);
|
||||||
|
loadDemandesFinaliseesMethod.invoke(page);
|
||||||
|
|
||||||
|
// Sélectionner la demande
|
||||||
|
int lastRow = page.getTable().getRowCount() - 1;
|
||||||
|
page.getTable().setRowSelectionInterval(lastRow, lastRow);
|
||||||
|
|
||||||
|
// Modifier l'avis
|
||||||
|
Method modifierAvisMethod = BenevoleDemandesFinaliseesPage.class.getDeclaredMethod("modifierAvis");
|
||||||
|
modifierAvisMethod.setAccessible(true);
|
||||||
|
modifierAvisMethod.invoke(page);
|
||||||
|
|
||||||
|
Thread.sleep(1000); // Attendre la mise à jour
|
||||||
|
|
||||||
|
// Vérifier la modification
|
||||||
|
String checkSQL = "SELECT avis_benevole FROM demandes_aide WHERE id = ?";
|
||||||
|
PreparedStatement checkStatement = connection.prepareStatement(checkSQL);
|
||||||
|
checkStatement.setInt(1, demandeID);
|
||||||
|
ResultSet resultSet = checkStatement.executeQuery();
|
||||||
|
|
||||||
|
assertTrue(resultSet.next(), "La demande doit exister");
|
||||||
|
String nouvelAvis = resultSet.getString("avis_benevole");
|
||||||
|
assertNotEquals("Avis initial", nouvelAvis, "L'avis doit être modifié");
|
||||||
|
|
||||||
|
// Nettoyage
|
||||||
|
String deleteSQL = "DELETE FROM demandes_aide WHERE id = ?";
|
||||||
|
PreparedStatement deleteStatement = connection.prepareStatement(deleteSQL);
|
||||||
|
deleteStatement.setInt(1, demandeID);
|
||||||
|
deleteStatement.executeUpdate();
|
||||||
|
|
||||||
|
} catch (SQLException | NoSuchMethodException | IllegalAccessException | InvocationTargetException | InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue