BenevoleDemandesPageTest complété
This commit is contained in:
parent
da793d64f4
commit
eba4b31427
4 changed files with 134 additions and 14 deletions
|
@ -65,6 +65,13 @@ public class BenevoleDemandesPage extends JFrame {
|
|||
loadDemandesAcceptees();
|
||||
}
|
||||
|
||||
//Méthodes de type get()
|
||||
public JTable getTable() {return this.table;}
|
||||
public DefaultTableModel getTableModel() {return this.tableModel;}
|
||||
public JButton getPrendreDemandeButton() {return this.prendreDemandeButton;}
|
||||
public JButton getRetourBenevoleButton() {return this.retourBenevoleButton;}
|
||||
public int getID() {return this.utilisateurId;}
|
||||
|
||||
// Méthode pour charger les demandes acceptées
|
||||
private void loadDemandesAcceptees() {
|
||||
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||
|
|
|
@ -11,9 +11,9 @@ import java.sql.ResultSet;
|
|||
import java.sql.SQLException;
|
||||
|
||||
public class LoginPage extends JFrame {
|
||||
public JTextField emailField;
|
||||
public JButton loginButton;
|
||||
public JButton createAccountButton;
|
||||
private JTextField emailField;
|
||||
private JButton loginButton;
|
||||
private JButton createAccountButton;
|
||||
|
||||
public LoginPage() {
|
||||
setTitle("Page de connexion");
|
||||
|
@ -53,6 +53,13 @@ public class LoginPage extends JFrame {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
//Méthodes de type get()
|
||||
public JTextField getEmailField() {return this.emailField;}
|
||||
public JButton getLoginButton() {return this.loginButton;}
|
||||
public JButton getCreateAccountButton() {return this.createAccountButton;}
|
||||
|
||||
|
||||
// suprime de main menu
|
||||
// Méthode pour gérer la connexion de l'utilisateur
|
||||
private void loginUser() {
|
||||
|
|
|
@ -3,26 +3,132 @@ package controller;
|
|||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
|
||||
import database.DatabaseConnection;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class BenevoleDemandesPageTest {
|
||||
|
||||
private BenevoleDemandesPage benevoleDemandesPage;
|
||||
private JTable table;
|
||||
private int benevoleID = 2; //pour tester on prend arbitrairement un utilisateur qui est un bénévole
|
||||
private int demandeID; //on crée manuellment une demande pour les tests (on la supprime après)
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
benevoleDemandesPage = new BenevoleDemandesPage(1); // Utilisateur ID fictif
|
||||
void setUp() throws SQLException {
|
||||
//on crée la page des demandes acceptés
|
||||
benevoleDemandesPage = new BenevoleDemandesPage(benevoleID);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBenevoleDemandesPageNotNull() {
|
||||
void testBenevoleDemandesPage() {
|
||||
// Vérifier si la page des demandes de bénévoles est bien créée
|
||||
assertNotNull(benevoleDemandesPage);
|
||||
assertEquals(benevoleID,benevoleDemandesPage.getID(),"id pas correct");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testListeDemandesNonVide() {
|
||||
// Vérifie si la liste des demandes est initialisée (ou vide, selon les données dans la base)
|
||||
// assertNotNull(benevoleDemandesPage.getTable());
|
||||
try {
|
||||
// on utilise une méthode détournée pour accéder à la méthode private 'loadDemandesAcceptees()'
|
||||
Method loadDemandesAccepteesMethod = BenevoleDemandesPage.class.getDeclaredMethod("loadDemandesAcceptees");
|
||||
loadDemandesAccepteesMethod.setAccessible(true); // permet d'appeler la méthode même si elle est private
|
||||
loadDemandesAccepteesMethod.invoke(benevoleDemandesPage); // on l'appele
|
||||
|
||||
// Vérifie si la liste des demandes a bien été chargée
|
||||
assertNotNull(benevoleDemandesPage.getTable());
|
||||
assertNotNull(benevoleDemandesPage.getTableModel());
|
||||
} catch (InvocationTargetException | NoSuchMethodException | IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPrendreDemande() throws SQLException {
|
||||
//on crée une demande avec le statut 'acceptée' pour tester la méthode prendreDemande()
|
||||
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||
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, "acceptée");
|
||||
insertStatement.setNull(2, java.sql.Types.INTEGER); // Aucun utilisateur affecté
|
||||
insertStatement.setNull(3, java.sql.Types.INTEGER); // Aucun bénévole affecté initialement
|
||||
insertStatement.setString(4, "Demande de test pour JUnit");
|
||||
insertStatement.executeUpdate();
|
||||
|
||||
// Récupération de l'ID généré pour pouvoir le supprimer après
|
||||
ResultSet generatedKeys = insertStatement.getGeneratedKeys();
|
||||
if (generatedKeys.next()) {
|
||||
demandeID = generatedKeys.getInt(1);
|
||||
}
|
||||
|
||||
// on met à jour la table avec la nouvelle demande rajoutée
|
||||
// on utilise une méthode détournée pour accéder à la méthode private 'loadDemandesAcceptees()'
|
||||
Method loadDemandesAccepteesMethod = BenevoleDemandesPage.class.getDeclaredMethod("loadDemandesAcceptees");
|
||||
loadDemandesAccepteesMethod.setAccessible(true); // permet d'appeler la méthode même si elle est private
|
||||
loadDemandesAccepteesMethod.invoke(benevoleDemandesPage); // on l'appele
|
||||
|
||||
//test de prendreDemande(); on sélectionne la dernière ligne de la table car elle correspond à la demande test
|
||||
int lastRow = benevoleDemandesPage.getTable().getRowCount()-1;
|
||||
benevoleDemandesPage.getTable().setRowSelectionInterval(lastRow, lastRow);
|
||||
|
||||
// idem que pour loadDemandesAcceptees() comme prendreDemande() est aussi en private
|
||||
Method prendreDemandeMethod = BenevoleDemandesPage.class.getDeclaredMethod("prendreDemande");
|
||||
prendreDemandeMethod.setAccessible(true); // permet d'appeler la méthode même si elle est private
|
||||
prendreDemandeMethod.invoke(benevoleDemandesPage); // on l'appele
|
||||
|
||||
// on attend un moment pour que la base de données se mette à jour
|
||||
Thread.sleep(1000);
|
||||
|
||||
String sql = "SELECT statut, benevole_id FROM demandes_aide WHERE id = ?";
|
||||
PreparedStatement statement = connection.prepareStatement(sql);
|
||||
statement.setInt(1, demandeID);
|
||||
ResultSet resultSet = statement.executeQuery();
|
||||
|
||||
String currentStatus = "";
|
||||
int currentBenevole = -1;
|
||||
if (resultSet.next()) {
|
||||
currentStatus = resultSet.getString("statut");
|
||||
currentBenevole = resultSet.getInt("benevole_id");
|
||||
}
|
||||
|
||||
assertEquals("en cours", currentStatus, "Le statut doit être 'en cours'.");
|
||||
assertEquals(benevoleID, currentBenevole, "L'id du bénévole n'a pas correctement été attribué.");
|
||||
|
||||
// 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 e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
//ce test repose sur le fait que l'excution de la méthode prendreDemande() en ayant sélectionnée une ligne entraine la disparition de la ligne
|
||||
//donc si le nombre de ligne n'a pas changé tout est bon
|
||||
@Test
|
||||
void testPrendreDemandeNonSelectionnee() {
|
||||
// Désélectionner toute ligne pour simuler l'absence de sélection
|
||||
benevoleDemandesPage.getTable().clearSelection();
|
||||
|
||||
// on enregistre l'état avant l'appel de la méthode
|
||||
int rowCountBefore = benevoleDemandesPage.getTableModel().getRowCount();
|
||||
|
||||
//test de prendreDemande() sans rien sélectionner
|
||||
JButton prendreButton = benevoleDemandesPage.getPrendreDemandeButton();
|
||||
prendreButton.doClick();
|
||||
|
||||
// on vérifier que l'état de la table n'a pas changé (la table n'a pas été modifiée)
|
||||
int rowCountAfter = benevoleDemandesPage.getTableModel().getRowCount();
|
||||
assertEquals(rowCountBefore, rowCountAfter, "La table ne doit pas être modifiée si aucune demande n'est sélectionnée.");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -24,8 +24,8 @@ class LoginPageTest {
|
|||
@Test
|
||||
void emailFieldIsEmpty() {
|
||||
// Simule un champ email vide et vérifie le message d'erreur
|
||||
loginPage.emailField.setText(""); // Simule que l'email est vide
|
||||
JButton loginButton = loginPage.loginButton;
|
||||
loginPage.getEmailField().setText(""); // Simule que l'email est vide
|
||||
JButton loginButton = loginPage.getLoginButton();
|
||||
loginButton.doClick(); // Simule un clic sur le bouton "Se connecter"
|
||||
|
||||
// Vérifie que la boîte de dialogue pour email vide s'affiche
|
||||
|
@ -36,8 +36,8 @@ class LoginPageTest {
|
|||
@Test
|
||||
void emailNotFound() {
|
||||
// Simule un email non existant
|
||||
loginPage.emailField.setText("notfound@test.com"); // Simule un email qui n'existe pas
|
||||
JButton loginButton = loginPage.loginButton;
|
||||
loginPage.getEmailField().setText("notfound@test.com"); // Simule un email qui n'existe pas
|
||||
JButton loginButton = loginPage.getLoginButton();
|
||||
loginButton.doClick(); // Simule un clic sur le bouton "Se connecter"
|
||||
|
||||
// Vérifie que la boîte de dialogue pour email non trouvé s'affiche
|
||||
|
@ -48,7 +48,7 @@ class LoginPageTest {
|
|||
@Test
|
||||
void createAccountButtonWorks() {
|
||||
// Vérifie si le bouton "Créer un compte" redirige vers la page de création
|
||||
JButton createAccountButton = loginPage.createAccountButton;
|
||||
JButton createAccountButton = loginPage.getCreateAccountButton();
|
||||
createAccountButton.doClick(); // Simule un clic sur le bouton "Créer un compte"
|
||||
|
||||
// Vérifie que la page de création de compte est ouverte
|
||||
|
|
Loading…
Reference in a new issue