Actualiser src/test/java/controller/CreateAccountPageTest.java
This commit is contained in:
parent
eba4b31427
commit
8baed595d2
1 changed files with 102 additions and 7 deletions
|
@ -1,29 +1,124 @@
|
||||||
package controller;
|
package controller;
|
||||||
|
|
||||||
|
import database.DatabaseConnection;
|
||||||
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 javax.swing.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
class CreateAccountPageTest {
|
class CreateAccountPageTest {
|
||||||
|
|
||||||
private CreateAccountPage createAccountPage;
|
private CreateAccountPage createAccountPage;
|
||||||
|
private JTextField nomField;
|
||||||
|
private JTextField emailField;
|
||||||
|
private JComboBox<String> roleComboBox;
|
||||||
|
private JButton createAccountButton;
|
||||||
|
private JButton retourLoginButton;
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setUp() {
|
void setUp() throws NoSuchFieldException, IllegalAccessException {
|
||||||
createAccountPage = new CreateAccountPage();
|
createAccountPage = new CreateAccountPage();
|
||||||
|
|
||||||
|
// Access private fields using reflection
|
||||||
|
nomField = (JTextField) getField("nomField");
|
||||||
|
emailField = (JTextField) getField("emailField");
|
||||||
|
roleComboBox = (JComboBox<String>) getField("roleComboBox");
|
||||||
|
createAccountButton = (JButton) getField("createAccountButton");
|
||||||
|
retourLoginButton = (JButton) getField("retourLoginButton");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper method to access private fields
|
||||||
|
private Object getField(String fieldName) throws NoSuchFieldException, IllegalAccessException {
|
||||||
|
Field field = CreateAccountPage.class.getDeclaredField(fieldName);
|
||||||
|
field.setAccessible(true);
|
||||||
|
return field.get(createAccountPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testCreateAccountPageNotNull() {
|
void testCreateAccountPageComponents() {
|
||||||
// Vérifier si la page de création de compte est bien créée
|
|
||||||
assertNotNull(createAccountPage);
|
assertNotNull(createAccountPage);
|
||||||
|
assertNotNull(nomField);
|
||||||
|
assertNotNull(emailField);
|
||||||
|
assertNotNull(roleComboBox);
|
||||||
|
assertNotNull(createAccountButton);
|
||||||
|
assertNotNull(retourLoginButton);
|
||||||
|
|
||||||
|
// Check default values and UI setup
|
||||||
|
assertEquals("", nomField.getText());
|
||||||
|
assertEquals("", emailField.getText());
|
||||||
|
assertEquals("benevole", roleComboBox.getSelectedItem());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testFieldsInitiallyEmpty() {
|
void testCreateAccountWithValidData() throws SQLException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
|
||||||
// Tester si les champs de texte sont initialement vides
|
// Set field values
|
||||||
// assertEquals("", createAccountPage.getNomField().getText());
|
nomField.setText("Test User");
|
||||||
// assertEquals("", createAccountPage.getEmailField().getText());
|
emailField.setText("test@example.com");
|
||||||
|
roleComboBox.setSelectedItem("benevole");
|
||||||
|
|
||||||
|
// Access and invoke the createAccount() method using reflection
|
||||||
|
Method createAccountMethod = CreateAccountPage.class.getDeclaredMethod("createAccount");
|
||||||
|
createAccountMethod.setAccessible(true);
|
||||||
|
createAccountMethod.invoke(createAccountPage);
|
||||||
|
|
||||||
|
// Check that the user was added to the database
|
||||||
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
|
String sql = "SELECT * FROM utilisateur WHERE nom = ? AND email = ?";
|
||||||
|
PreparedStatement statement = connection.prepareStatement(sql);
|
||||||
|
statement.setString(1, "Test User");
|
||||||
|
statement.setString(2, "test@example.com");
|
||||||
|
ResultSet resultSet = statement.executeQuery();
|
||||||
|
|
||||||
|
assertTrue(resultSet.next(), "L'utilisateur doit être ajouté à la base de données.");
|
||||||
|
|
||||||
|
// Clean up the inserted test data
|
||||||
|
String deleteSQL = "DELETE FROM utilisateur WHERE nom = ? AND email = ?";
|
||||||
|
PreparedStatement deleteStatement = connection.prepareStatement(deleteSQL);
|
||||||
|
deleteStatement.setString(1, "Test User");
|
||||||
|
deleteStatement.setString(2, "test@example.com");
|
||||||
|
deleteStatement.executeUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testCreateAccountWithEmptyFields() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
|
||||||
|
// Set empty fields to simulate missing input
|
||||||
|
nomField.setText("");
|
||||||
|
emailField.setText("");
|
||||||
|
|
||||||
|
// Access and invoke the createAccount() method using reflection
|
||||||
|
Method createAccountMethod = CreateAccountPage.class.getDeclaredMethod("createAccount");
|
||||||
|
createAccountMethod.setAccessible(true);
|
||||||
|
createAccountMethod.invoke(createAccountPage);
|
||||||
|
|
||||||
|
// Check if the error message dialog was displayed (mocked by asserting the lack of database change)
|
||||||
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
|
String sql = "SELECT * FROM utilisateur WHERE nom = ? AND email = ?";
|
||||||
|
PreparedStatement statement = connection.prepareStatement(sql);
|
||||||
|
statement.setString(1, "");
|
||||||
|
statement.setString(2, "");
|
||||||
|
ResultSet resultSet = statement.executeQuery();
|
||||||
|
|
||||||
|
assertFalse(resultSet.next(), "Aucun utilisateur ne doit être ajouté lorsque les champs sont vides.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testRetourLoginButton() {
|
||||||
|
// Simulate clicking the "Retour à la connexion" button
|
||||||
|
retourLoginButton.doClick();
|
||||||
|
|
||||||
|
// 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'.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue