diff --git a/src/test/java/controller/BenevoleDemandesPageTest.java b/src/test/java/controller/BenevoleDemandesPageTest.java index d721ef9..ae6a30e 100644 --- a/src/test/java/controller/BenevoleDemandesPageTest.java +++ b/src/test/java/controller/BenevoleDemandesPageTest.java @@ -129,5 +129,70 @@ class BenevoleDemandesPageTest { int rowCountAfter = benevoleDemandesPage.getTableModel().getRowCount(); assertEquals(rowCountBefore, rowCountAfter, "La table ne doit pas être modifiée si aucune demande n'est sélectionnée."); } + + + @Test + void testLoadDemandesAcceptees() { + try (Connection connection = DatabaseConnection.getConnection()) { + // Créer trois demandes tests avec le statut 'acceptée' + String desc1 = "Demande 1 test pour JUnit / Test loadDemandesAcceptees"; + String desc2 = "Demande 2 test pour JUnit / Test loadDemandesAcceptees"; + String desc3 = "Demande 3 test pour JUnit / Test loadDemandesAcceptees"; + + // Création des demandes tests + String insertSQL = "INSERT INTO demandes_aide (statut, description) VALUES (?, ?)"; + PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS); + + // Première demande + insertStatement.setString(1, "acceptée"); + insertStatement.setString(2, desc1); + insertStatement.executeUpdate(); + + // Récupérer l'ID de la première demande + ResultSet generatedKeys = insertStatement.getGeneratedKeys(); + if (generatedKeys.next()) { + demandeID = generatedKeys.getInt(1); + } + + // Deuxième et troisième demandes + insertStatement.setString(2, desc2); + insertStatement.executeUpdate(); + insertStatement.setString(2, desc3); + insertStatement.executeUpdate(); + + // Charger les demandes dans la table + Method loadDemandesAccepteesMethod = BenevoleDemandesPage.class.getDeclaredMethod("loadDemandesAcceptees"); + loadDemandesAccepteesMethod.setAccessible(true); + loadDemandesAccepteesMethod.invoke(benevoleDemandesPage); + + // Vérifier que les descriptions sont bien chargées + int lastRow = benevoleDemandesPage.getTable().getRowCount() - 1; + + // Vérifier que les trois dernières lignes correspondent à nos demandes de test + String desc_actual = (String) benevoleDemandesPage.getTableModel().getValueAt(lastRow-2, 1) + + (String) benevoleDemandesPage.getTableModel().getValueAt(lastRow-1, 1) + + (String) benevoleDemandesPage.getTableModel().getValueAt(lastRow, 1); + + String desc_expected = desc1 + desc2 + desc3; + assertEquals(desc_expected, desc_actual, "Les descriptions doivent correspondre"); + + // Vérifier que le statut est 'acceptée' pour chaque demande + for (int i = 0; i < 3; i++) { + String status = (String) benevoleDemandesPage.getTableModel().getValueAt(lastRow-i, 2); + assertEquals("acceptée", status, "Le statut doit être 'acceptée'"); + } + + // 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); + } + } }