diff --git a/src/test/java/controller/LoginPageTest.java b/src/test/java/controller/LoginPageTest.java index fdbc9e7..b7010e3 100644 --- a/src/test/java/controller/LoginPageTest.java +++ b/src/test/java/controller/LoginPageTest.java @@ -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; + } + + 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 - 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" - - // Vérifie que la boîte de dialogue pour email vide s'affiche - String expectedMessage = "Veuillez entrer votre email."; - assertTrue(isDialogVisibleWithMessage(expectedMessage)); + public static void main(String[] args) { + LoginPage loginPage = new LoginPage(); + loginPage.setVisible(true); } - - @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 - } -} \ No newline at end of file +}