Actualiser src/test/java/controller/LoginPageTest.java

This commit is contained in:
Abderrahman El-Ouali 2024-11-15 23:12:57 +01:00
parent 8baed595d2
commit 0f410a0e2f

View file

@ -1,70 +1,112 @@
package controller; package controller;
import org.junit.jupiter.api.BeforeEach; import database.DatabaseConnection;
import org.junit.jupiter.api.Test;
import javax.swing.*; import javax.swing.*;
import static org.junit.jupiter.api.Assertions.*; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
class LoginPageTest { public class LoginPage extends JFrame {
private JTextField emailField;
private JButton loginButton;
private JButton createAccountButton;
private LoginPage loginPage; public LoginPage() {
setTitle("Page de connexion");
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
@BeforeEach // Création des champs et boutons
void setUp() { JLabel emailLabel = new JLabel("Email :");
// Instancie la page de login pour les tests emailField = new JTextField(20);
loginPage = new LoginPage(); 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
}
});
} }
@Test //Méthodes de type get()
void loginPageNotNull() { public JTextField getEmailField() {return this.emailField;}
// Teste si l'interface de la page de connexion est bien créée public JButton getLoginButton() {return this.loginButton;}
assertNotNull(loginPage); 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;
}
try (Connection connection = DatabaseConnection.getConnection()) {
String sql = "SELECT id, role FROM utilisateur WHERE email = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, email);
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
int utilisateurId = resultSet.getInt("id");
String role = resultSet.getString("role");
// Rediriger vers la bonne page selon le rôle
if (role.equalsIgnoreCase("benevole")) {
MenuBenevole menu = new MenuBenevole(utilisateurId);
menu.setVisible(true);
dispose();
} else if (role.equalsIgnoreCase("personne_besoin")) {
SoumettreDemande soumettreDemandePage = new SoumettreDemande(utilisateurId);
soumettreDemandePage.setVisible(true);
dispose();
} else if (role.equalsIgnoreCase("validateur")) {
Validateur validateurPage = new Validateur(utilisateurId);
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.");
}
} }
@Test public static void main(String[] args) {
void emailFieldIsEmpty() { LoginPage loginPage = new LoginPage();
// Simule un champ email vide et vérifie le message d'erreur loginPage.setVisible(true);
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
String expectedMessage = "Veuillez entrer votre email.";
assertTrue(isDialogVisibleWithMessage(expectedMessage));
} }
}
@Test
void emailNotFound() {
// Simule un email non existant
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
String expectedMessage = "Email non trouvé. Veuillez créer un compte.";
assertTrue(isDialogVisibleWithMessage(expectedMessage));
}
@Test
void createAccountButtonWorks() {
// Vérifie si le bouton "Créer un compte" redirige vers la page de création
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
assertTrue(isFrameVisible(CreateAccountPage.class));
}
// Méthode utilitaire pour vérifier si une boîte de dialogue avec un message spécifique est visible
private boolean isDialogVisibleWithMessage(String message) {
// Cette méthode peut être implémentée pour intercepter les dialogues créés avec JOptionPane.showMessageDialog
// Il est possible d'utiliser un mécanisme de mock pour capturer la boîte de dialogue
return true; // Retourne true si le message de la boîte de dialogue correspond
}
// Méthode utilitaire pour vérifier si une JFrame spécifique est visible
private boolean isFrameVisible(Class<?> frameClass) {
// Cette méthode peut être implémentée pour vérifier si une nouvelle fenêtre (JFrame) s'ouvre
return true; // Retourne true si la fenêtre est visible
}
}