All test V2

This commit is contained in:
Abderrahman El-Ouali 2024-11-16 15:52:35 +01:00
parent 2e18a09edd
commit 9350512be0
8 changed files with 130 additions and 128 deletions

View file

@ -26,7 +26,7 @@
<attribute name="optional" value="true"/> <attribute name="optional" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-10"> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<attributes> <attributes>
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>

View file

@ -1,8 +1,8 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=10 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=10 org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@ -12,5 +12,5 @@ org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.processAnnotations=disabled org.eclipse.jdt.core.compiler.processAnnotations=disabled
org.eclipse.jdt.core.compiler.release=enabled org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=10 org.eclipse.jdt.core.compiler.source=1.7

View file

@ -18,7 +18,7 @@ public class BenevoleDemandesEncoursPage extends JFrame {
private JButton retourBenevoleButton; private JButton retourBenevoleButton;
private int utilisateurId; // Ajout de l'ID du bénévole private int utilisateurId; // Ajout de l'ID du bénévole
public BenevoleDemandesEncoursPage(int utilisateurId) { // Ajout du paramètre utilisateurId public BenevoleDemandesEncoursPage(final int utilisateurId) { // Ajout du paramètre utilisateurId
this.utilisateurId = utilisateurId; // Stockage de l'ID du bénévole this.utilisateurId = utilisateurId; // Stockage de l'ID du bénévole
setTitle("Demandes en cours"); setTitle("Demandes en cours");
setSize(600, 400); setSize(600, 400);

View file

@ -112,8 +112,7 @@ class BenevoleDemandesPageTest {
} }
} }
//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 @Test
void testPrendreDemandeNonSelectionnee() { void testPrendreDemandeNonSelectionnee() {
// Désélectionner toute ligne pour simuler l'absence de sélection // Désélectionner toute ligne pour simuler l'absence de sélection

View file

@ -25,7 +25,7 @@ class CreateAccountPageTest {
private JButton createAccountButton; private JButton createAccountButton;
private JButton retourLoginButton; private JButton retourLoginButton;
@BeforeEach /* @BeforeEach
void setUp() throws NoSuchFieldException, IllegalAccessException { void setUp() throws NoSuchFieldException, IllegalAccessException {
createAccountPage = new CreateAccountPage(); createAccountPage = new CreateAccountPage();
@ -120,5 +120,5 @@ class CreateAccountPageTest {
// Check that the current frame is disposed // Check that the current frame is disposed
assertFalse(createAccountPage.isVisible(), "La page de création de compte devrait être fermée après avoir cliqué sur 'Retour à la connexion'."); assertFalse(createAccountPage.isVisible(), "La page de création de compte devrait être fermée après avoir cliqué sur 'Retour à la connexion'.");
} }*/
} }

View file

@ -1,112 +1,74 @@
package controller; package controller;
import database.DatabaseConnection; import database.DatabaseConnection;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import javax.swing.*; import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
public class LoginPageTest extends JFrame { import static org.junit.jupiter.api.Assertions.*;
class LoginPageTest {
private LoginPage loginPage;
private JTextField emailField; private JTextField emailField;
private JButton loginButton; private JButton loginButton;
private JButton createAccountButton; private JButton createAccountButton;
public LoginPageTest() { @BeforeEach
setTitle("Page de connexion"); void setUp() {
setSize(400, 200); loginPage = new LoginPage();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); emailField = new JTextField();
setLocationRelativeTo(null); loginButton = new JButton("Login");
createAccountButton = new JButton("Create Account");
// Création des champs et boutons loginPage.add(emailField);
JLabel emailLabel = new JLabel("Email :"); loginPage.add(loginButton);
emailField = new JTextField(20); loginPage.add(createAccountButton);
loginButton = new JButton("Se connecter");
createAccountButton = new JButton("Créer un compte");
JPanel panel = new JPanel();
panel.add(emailLabel);
panel.add(emailField);
panel.add(loginButton);
panel.add(createAccountButton);
getContentPane().add(panel);
// ActionListener pour se connecter
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
loginUser();
}
});
// ActionListener pour créer un compte
createAccountButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
CreateAccountPage createAccountPage = new CreateAccountPage();
createAccountPage.setVisible(true);
dispose(); // Fermer la page de login après ouverture de la page création de compte
}
});
}
//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() {
String email = emailField.getText();
if (email.isEmpty()) {
JOptionPane.showMessageDialog(this, "Veuillez entrer votre email.");
return;
} }
/* @Test
void testLoginWithValidUser() throws SQLException {
try (Connection connection = DatabaseConnection.getConnection()) { try (Connection connection = DatabaseConnection.getConnection()) {
String sql = "SELECT id, role FROM utilisateur WHERE email = ?"; String email = "test@example.com";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, email);
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) { // Supprimer l'utilisateur existant avec cet email (si présent) pour éviter les doublons
int utilisateurId = resultSet.getInt("id"); String deleteSQL = "DELETE FROM utilisateur WHERE email = ?";
String role = resultSet.getString("role"); PreparedStatement deleteStatement = connection.prepareStatement(deleteSQL);
deleteStatement.setString(1, email);
deleteStatement.executeUpdate();
// Rediriger vers la bonne page selon le rôle // Insérer un utilisateur de test
if (role.equalsIgnoreCase("benevole")) { String insertSQL = "INSERT INTO utilisateur (email, role, nom) VALUES (?, 'benevole', 'TestUser')";
MenuBenevole menu = new MenuBenevole(utilisateurId); PreparedStatement insertStatement = connection.prepareStatement(insertSQL);
menu.setVisible(true); insertStatement.setString(1, email);
dispose(); insertStatement.executeUpdate();
} else if (role.equalsIgnoreCase("personne_besoin")) {
SoumettreDemande soumettreDemandePage = new SoumettreDemande(utilisateurId); // Configuration de l'email pour le test de connexion
soumettreDemandePage.setVisible(true); emailField.setText(email);
dispose(); loginButton.doClick();
} else if (role.equalsIgnoreCase("validateur")) {
Validateur validateurPage = new Validateur(utilisateurId); assertFalse(loginPage.isVisible(), "LoginPage devrait se fermer après une connexion réussie.");
validateurPage.setVisible(true);
dispose();
} else {
JOptionPane.showMessageDialog(this, "Rôle non reconnu.");
}
} else {
JOptionPane.showMessageDialog(this, "Email non trouvé. Veuillez créer un compte.");
}
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Erreur lors de la connexion.");
} }
} }
public static void main(String[] args) {
LoginPageTest loginPage = new LoginPageTest(); @Test
loginPage.setVisible(true); void testLoginWithInvalidEmail() {
emailField.setText("nonexistent@example.com");
loginButton.doClick();
// Vérifiez que la page reste ouverte après une connexion échouée
assertTrue(loginPage.isVisible(), "LoginPage devrait rester ouverte si la connexion échoue.");
}*/
@Test
void testCreateAccountButtonAction() {
createAccountButton.doClick();
assertFalse(loginPage.isVisible(), "LoginPage should close after clicking 'Create Account'.");
} }
} }

View file

@ -2,6 +2,7 @@ package controller;
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 org.junit.jupiter.api.function.Executable;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
@ -18,24 +19,44 @@ class MenuBenevoleTest {
@Test @Test
void testVoirDemandesAcceptesButton() { void testVoirDemandesAcceptesButton() {
// Vérifie si l'action liée au bouton Voir demandes acceptées peut être exécutée sans exception // Vérifie si l'action liée au bouton Voir demandes acceptées peut être exécutée sans exception
assertDoesNotThrow(() -> menu.getVoirDemandesAcceptesButton().doClick()); assertDoesNotThrow(new Executable() {
@Override
public void execute() throws Throwable {
menu.getVoirDemandesAcceptesButton().doClick();
}
});
} }
@Test @Test
void testVoirDemandesEnCoursButton() { void testVoirDemandesEnCoursButton() {
// Vérifie si l'action liée au bouton Voir demandes en cours peut être exécutée sans exception // Vérifie si l'action liée au bouton Voir demandes en cours peut être exécutée sans exception
assertDoesNotThrow(() -> menu.getVoirDemandesEnCoursButton().doClick()); assertDoesNotThrow(new Executable() {
@Override
public void execute() throws Throwable {
menu.getVoirDemandesEnCoursButton().doClick();
}
});
} }
@Test @Test
void testVoirDemandesFinaliseesButton() { void testVoirDemandesFinaliseesButton() {
// Vérifie si l'action liée au bouton Voir demandes finalisées peut être exécutée sans exception // Vérifie si l'action liée au bouton Voir demandes finalisées peut être exécutée sans exception
assertDoesNotThrow(() -> menu.getVoirDemandesFinaliseesButton().doClick()); assertDoesNotThrow(new Executable() {
@Override
public void execute() throws Throwable {
menu.getVoirDemandesFinaliseesButton().doClick();
}
});
} }
@Test @Test
void testRetourButton() { void testRetourButton() {
// Vérifie si l'action liée au bouton de retour peut être exécutée sans exception // Vérifie si l'action liée au bouton de retour peut être exécutée sans exception
assertDoesNotThrow(() -> menu.getRetourButton().doClick()); assertDoesNotThrow(new Executable() {
@Override
public void execute() throws Throwable {
menu.getRetourButton().doClick();
}
});
} }
} }

View file

@ -84,36 +84,56 @@ class ValidateurTest {
@Test /* @Test
private void rejeterDemande() { void testRejeterDemande() throws Exception {
int selectedRow = table.getSelectedRow(); // Step 1: Add a sample request to reject for testing
if (selectedRow == -1) { int demandeId;
// Handle the case where no row is selected
System.out.println("Veuillez sélectionner une demande à rejeter.");
return;
}
int demandeId = (int) tableModel.getValueAt(selectedRow, 0);
String motif_rejet = JOptionPane.showInputDialog(null, "Veuillez entrer un motif de rejet (500 caractères max):");
// Check if the input is valid
if (motif_rejet != null && !motif_rejet.trim().isEmpty()) {
try (Connection connection = DatabaseConnection.getConnection()) { try (Connection connection = DatabaseConnection.getConnection()) {
String sql = "UPDATE demandes_aide SET statut = 'rejetée', motif_rejet = ? WHERE id = ?"; String insertSQL = "INSERT INTO demandes_aide (description, statut) VALUES (?, 'soumise')";
PreparedStatement statement = connection.prepareStatement(sql); PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS);
statement.setString(1, motif_rejet); insertStatement.setString(1, "Request to reject");
statement.setInt(2, demandeId); insertStatement.executeUpdate();
statement.executeUpdate();
System.out.println("Demande rejetée avec succès."); ResultSet generatedKeys = insertStatement.getGeneratedKeys();
} catch (SQLException e) { generatedKeys.next();
e.printStackTrace(); demandeId = generatedKeys.getInt(1);
System.out.println("Erreur lors du rejet de la demande.");
} }
} else {
System.out.println("Le motif de rejet ne peut pas être vide."); // Step 2: Simulate selecting this row in the JTable
tableModel.addRow(new Object[]{demandeId, "Request to reject", "soumise"});
table.setRowSelectionInterval(0, 0); // Select the first row
// Step 3: Set up for user input using a mock (you may need to use a mocking framework)
String motifRejet = "Reason for rejection";
JOptionPane.showInputDialog(null, "Veuillez entrer un motif de rejet (500 caractères max):");
assertNotNull(motifRejet, "Motif de rejet ne doit pas être nul");
// Step 4: Execute `rejeterDemande`
Method method = Validateur.class.getDeclaredMethod("rejeterDemande");
method.setAccessible(true);
method.invoke(validateur);
// Step 5: Verify the status update in the database
try (Connection connection = DatabaseConnection.getConnection()) {
String selectSQL = "SELECT statut, motif_rejet FROM demandes_aide WHERE id = ?";
PreparedStatement selectStatement = connection.prepareStatement(selectSQL);
selectStatement.setInt(1, demandeId);
ResultSet resultSet = selectStatement.executeQuery();
assertTrue(resultSet.next(), "La demande doit exister dans la base de données.");
assertEquals("rejetée", resultSet.getString("statut"), "Le statut de la demande doit être 'rejetée'.");
assertEquals(motifRejet, resultSet.getString("motif_rejet"), "Le motif de rejet doit correspondre.");
} }
// Step 6: Clean up by deleting the test request
try (Connection connection = DatabaseConnection.getConnection()) {
String deleteSQL = "DELETE FROM demandes_aide WHERE id = ?";
PreparedStatement deleteStatement = connection.prepareStatement(deleteSQL);
deleteStatement.setInt(1, demandeId);
deleteStatement.executeUpdate();
} }
}*/