diff --git a/src/test/java/controller/BenevoleDemandesFinaliseesPageTest.java b/src/test/java/controller/BenevoleDemandesFinaliseesPageTest.java index 9238421..0fb03f5 100644 --- a/src/test/java/controller/BenevoleDemandesFinaliseesPageTest.java +++ b/src/test/java/controller/BenevoleDemandesFinaliseesPageTest.java @@ -134,4 +134,64 @@ class BenevoleDemandesFinaliseesPageTest { throw new RuntimeException(e); } } + + @Test + void testAfficherAvis() { + try (Connection connection = DatabaseConnection.getConnection()) { + // Créer une demande finalisée avec des avis + String description = "Demande test pour affichage des avis"; + String avisBenevole = "Avis du bénévole test"; + String avisBesoin = "Avis de la personne test"; + + String insertSQL = "INSERT INTO demandes_aide (statut, utilisateur_id, benevole_id, description, avis_benevole, avis_besoin) 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, description); + insertStatement.setString(5, avisBenevole); + insertStatement.setString(6, avisBesoin); + insertStatement.executeUpdate(); + + // Récupérer l'ID de la demande créée + 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); + + // Exécuter l'affichage des avis + Method afficherAvisMethod = BenevoleDemandesFinaliseesPage.class.getDeclaredMethod("afficherAvis"); + afficherAvisMethod.setAccessible(true); + afficherAvisMethod.invoke(page); + + // Vérifier que les avis sont corrects dans la base de données + String checkSQL = "SELECT avis_benevole, avis_besoin, description 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"); + assertEquals(avisBenevole, resultSet.getString("avis_benevole"), "TEST L'avis du bénévole doit correspondre"); + assertEquals(avisBesoin, resultSet.getString("avis_besoin"), "TEST L'avis de la personne doit correspondre"); + assertEquals(description, resultSet.getString("description"), "TEST La description doit correspondre"); + + // 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 e) { + throw new RuntimeException(e); + } + } } \ No newline at end of file