Actualiser src/test/java/controller/LoginPageTest.java
This commit is contained in:
parent
8baed595d2
commit
0f410a0e2f
1 changed files with 101 additions and 59 deletions
|
@ -1,70 +1,112 @@
|
|||
package controller;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import database.DatabaseConnection;
|
||||
|
||||
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
|
||||
void setUp() {
|
||||
// Instancie la page de login pour les tests
|
||||
loginPage = new LoginPage();
|
||||
// Création des champs et boutons
|
||||
JLabel emailLabel = new JLabel("Email :");
|
||||
emailField = new JTextField(20);
|
||||
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
|
||||
void loginPageNotNull() {
|
||||
// Teste si l'interface de la page de connexion est bien créée
|
||||
assertNotNull(loginPage);
|
||||
//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 emailFieldIsEmpty() {
|
||||
// Simule un champ email vide et vérifie le message d'erreur
|
||||
loginPage.getEmailField().setText(""); // Simule que l'email est vide
|
||||
JButton loginButton = loginPage.getLoginButton();
|
||||
loginButton.doClick(); // Simule un clic sur le bouton "Se connecter"
|
||||
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();
|
||||
|
||||
// Vérifie que la boîte de dialogue pour email vide s'affiche
|
||||
String expectedMessage = "Veuillez entrer votre email.";
|
||||
assertTrue(isDialogVisibleWithMessage(expectedMessage));
|
||||
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.");
|
||||
}
|
||||
|
||||
@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));
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(this, "Email non trouvé. Veuillez créer un compte.");
|
||||
}
|
||||
|
||||
@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
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
JOptionPane.showMessageDialog(this, "Erreur lors de la connexion.");
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
LoginPage loginPage = new LoginPage();
|
||||
loginPage.setVisible(true);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue