From 28e27da6aaa54269102827f3ed3197c23f43f8d7 Mon Sep 17 00:00:00 2001 From: skferrei Date: Wed, 18 Dec 2024 18:26:37 +0100 Subject: [PATCH] dernieres modifs tests unitaires et nouvelle CI forgejo --- .forgejo/workflow.yml | 48 +++++++ .github/workflows/.gitlab-ci.yml | 15 -- .github/workflows/maven.yml | 15 -- .gitlab-ci.yml | 1 - .../java/controller/SoumettreDemande.java | 2 +- .../java/controller/SoumettreDemandeTest.java | 129 +++++++++++++++++- 6 files changed, 171 insertions(+), 39 deletions(-) create mode 100644 .forgejo/workflow.yml delete mode 100644 .github/workflows/.gitlab-ci.yml delete mode 100644 .github/workflows/maven.yml delete mode 100644 .gitlab-ci.yml diff --git a/.forgejo/workflow.yml b/.forgejo/workflow.yml new file mode 100644 index 0000000..a1def0d --- /dev/null +++ b/.forgejo/workflow.yml @@ -0,0 +1,48 @@ +name: CI Workflow + +on: + push: + branches: + - main + - 'feature/*' + +jobs: + build-and-test: + runs-on: ubuntu-latest + + steps: + # on recupere d'abord le code + - name: Checkout code + uses: actions/checkout@v3 + + # on setup java comme il faut + - name: Set up Java + uses: actions/setup-java@v3 + with: + distribution: 'temurin' # OpenJDK + java-version: '17' # version de java pour le projet + + # on definit l'url, login et mot de passe pour la bdd insa + - name: Set database environment variables + env: + DB_URL: ${{ secrets.DB_URL }} + DB_USER: ${{ secrets.DB_USER }} + DB_PASSWORD: ${{ secrets.DB_PASSWORD }} + run: | + echo "Database environment variables have been set." + + # on compile d'abord le projet... + - name: Compile project + env: + DB_URL: ${{ secrets.DB_URL }} + DB_USER: ${{ secrets.DB_USER }} + DB_PASSWORD: ${{ secrets.DB_PASSWORD }} + run: mvn compile + + # ...puis enfin on fait les tests comme voulu + - name: Run tests + env: + DB_URL: ${{ secrets.DB_URL }} + DB_USER: ${{ secrets.DB_USER }} + DB_PASSWORD: ${{ secrets.DB_PASSWORD }} + run: mvn test diff --git a/.github/workflows/.gitlab-ci.yml b/.github/workflows/.gitlab-ci.yml deleted file mode 100644 index 1d08731..0000000 --- a/.github/workflows/.gitlab-ci.yml +++ /dev/null @@ -1,15 +0,0 @@ -workflow: - rules: - - if: $CI_COMMIT_BRANCH - -test: - image: maven:3.8.3-openjdk-11 - script: - - mvn clean test - variables: - DB_URL: "jdbc:mysql://srv-bdens.insa-toulouse.fr:3306/projet_gei_023" - DB_USER: "projet_gei_023" - DB_PASSWORD: "ohQu4ood" - artifacts: - reports: - junit: target/surefire-reports/*.xml \ No newline at end of file diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml deleted file mode 100644 index 1d08731..0000000 --- a/.github/workflows/maven.yml +++ /dev/null @@ -1,15 +0,0 @@ -workflow: - rules: - - if: $CI_COMMIT_BRANCH - -test: - image: maven:3.8.3-openjdk-11 - script: - - mvn clean test - variables: - DB_URL: "jdbc:mysql://srv-bdens.insa-toulouse.fr:3306/projet_gei_023" - DB_USER: "projet_gei_023" - DB_PASSWORD: "ohQu4ood" - artifacts: - reports: - junit: target/surefire-reports/*.xml \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 1956dfa..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1 +0,0 @@ -image: maven:3.8.3-openjdk-11 test: script: - mvn clean test variables: DB_URL: "jdbc:mysql://srv-bdens.insa-toulouse.fr:3306/projet_gei_023" DB_USER: "projet_gei_023" DB_PASSWORD: "ohQu4ood" \ No newline at end of file diff --git a/src/main/java/controller/SoumettreDemande.java b/src/main/java/controller/SoumettreDemande.java index 01e2cc3..97275c2 100644 --- a/src/main/java/controller/SoumettreDemande.java +++ b/src/main/java/controller/SoumettreDemande.java @@ -260,7 +260,7 @@ public class SoumettreDemande extends JFrame { if (resultSet.next()) { String currentStatus = resultSet.getString("statut"); - if ("finaliseé".equals(currentStatus)) { + if ("finalisée".equals(currentStatus)) { String avis = JOptionPane.showInputDialog(this, "Veuillez entrer votre avis (500 caractères max):", "Modification de l'avis", JOptionPane.PLAIN_MESSAGE); if (!avis.isEmpty()) { diff --git a/src/test/java/controller/SoumettreDemandeTest.java b/src/test/java/controller/SoumettreDemandeTest.java index 39f6ad0..5fb4783 100644 --- a/src/test/java/controller/SoumettreDemandeTest.java +++ b/src/test/java/controller/SoumettreDemandeTest.java @@ -23,6 +23,7 @@ class SoumettreDemandeTest { private DefaultTableModel tableModel; private int utilisateurID = 1; // utilisateur arbitraire qui va créer les demandes de test private int demandeID; + private int benevoleID = 2; @BeforeEach void setUp() throws NoSuchFieldException, IllegalAccessException { @@ -85,7 +86,7 @@ class SoumettreDemandeTest { PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS); insertStatement.setString(1, "finalisée"); insertStatement.setInt(2, utilisateurID); - insertStatement.setNull(3, java.sql.Types.INTEGER); // Aucun bénévole affecté initialement + insertStatement.setInt(3, benevoleID); insertStatement.setString(4, "Demande de test pour JUnit / Test modif avis_besoin"); insertStatement.setString(5, "Avis_besoin à modifier"); insertStatement.executeUpdate(); @@ -119,12 +120,9 @@ class SoumettreDemandeTest { statement.setInt(1, demandeID); ResultSet resultSet = statement.executeQuery(); - String currentAvis = ""; - if (resultSet.next()) { - currentAvis = resultSet.getString("avis_besoin"); - } - - assertNotEquals("Avis_besoin à modifier", currentAvis, "L'avis n'a pas été modifié."); + assertTrue(resultSet.next(), "La demande doit exister."); + String nouvelAvis = resultSet.getString("avis_besoin"); + assertNotEquals("Avis_besoin à modifier", nouvelAvis, "L'avis doit être modifié."); // Suppression de la demande de test après le test de prendreDemande() String deleteSQL = "DELETE FROM demandes_aide WHERE id = ?"; @@ -137,4 +135,121 @@ class SoumettreDemandeTest { } } + @Test + void testLoadAnciennesDemandes() { + try (Connection connection = DatabaseConnection.getConnection()) { + // Créer trois demandes tests + String desc1 = "Demande de test 1 pour JUnit / Test loadAnciennesDemandes"; + String desc2 = "Demande de test 2 pour JUnit / Test loadAnciennesDemandes"; + String desc3 = "Demande de test 3 pour JUnit / Test loadAnciennesDemandes"; + + // Insertion de la première demande + String insertSQL = "INSERT INTO demandes_aide (statut, utilisateur_id, benevole_id, description) VALUES (?, ?, ?, ?)"; + PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS); + insertStatement.setString(1, "soumise"); + insertStatement.setInt(2, utilisateurID); + insertStatement.setNull(3, java.sql.Types.INTEGER); + insertStatement.setString(4, desc1); + insertStatement.executeUpdate(); + + ResultSet generatedKeys = insertStatement.getGeneratedKeys(); + if (generatedKeys.next()) { + demandeID = generatedKeys.getInt(1); + } + + // Insertion des autres demandes + insertStatement.setString(4, desc2); + insertStatement.executeUpdate(); + insertStatement.setString(4, desc3); + insertStatement.executeUpdate(); + + // Charger les demandes dans la table + Method loadAnciennesDemandes = SoumettreDemande.class.getDeclaredMethod("loadAnciennesDemandes"); + loadAnciennesDemandes.setAccessible(true); + loadAnciennesDemandes.invoke(soumettreDemande); + + // Vérifier que les descriptions sont bien chargées + int lastRow = soumettreDemande.getTable().getRowCount() - 1; + String desc_actual = (String) soumettreDemande.getTableModel().getValueAt(lastRow-2, 1) + + (String) soumettreDemande.getTableModel().getValueAt(lastRow-1, 1) + + (String) soumettreDemande.getTableModel().getValueAt(lastRow, 1); + + String desc_expected = desc1 + desc2 + desc3; + assertEquals(desc_expected, desc_actual, "Les descriptions doivent correspondre."); + + // Nettoyage des données de test + for (int i = 0; i < 3; i++) { + String deleteSQL = "DELETE FROM demandes_aide WHERE id = ?"; + PreparedStatement deleteStatement = connection.prepareStatement(deleteSQL); + deleteStatement.setInt(1, demandeID + i); + deleteStatement.executeUpdate(); + } + + } catch (SQLException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } + } + + @Test + void testAfficherAvis() { + try (Connection connection = DatabaseConnection.getConnection()) { + // Créer une demande finalisée avec des avis + String description = "Demande test pour affichage des avis"; + String avisBenevole = "Avis du bénévole test"; + String avisBesoin = "Avis de la personne test"; + + String insertSQL = "INSERT INTO demandes_aide (statut, utilisateur_id, benevole_id, description, avis_benevole, avis_besoin) VALUES (?, ?, ?, ?, ?, ?)"; + PreparedStatement insertStatement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS); + insertStatement.setString(1, "finalisée"); + insertStatement.setInt(2, utilisateurID); + insertStatement.setInt(3, benevoleID); + insertStatement.setString(4, description); + insertStatement.setString(5, avisBenevole); + insertStatement.setString(6, avisBesoin); + insertStatement.executeUpdate(); + + // Récupérer l'ID de la demande créée + ResultSet generatedKeys = insertStatement.getGeneratedKeys(); + if (generatedKeys.next()) { + demandeID = generatedKeys.getInt(1); + } + + // Charger les demandes dans la table + Method loadAnciennesDemandes = SoumettreDemande.class.getDeclaredMethod("loadAnciennesDemandes"); + loadAnciennesDemandes.setAccessible(true); + loadAnciennesDemandes.invoke(soumettreDemande); + + // Sélectionner la demande + int lastRow = soumettreDemande.getTable().getRowCount() - 1; + soumettreDemande.getTable().setRowSelectionInterval(lastRow, lastRow); + + // Exécuter l'affichage des avis + Method afficherAvisMethod = SoumettreDemande.class.getDeclaredMethod("afficherAvis"); + afficherAvisMethod.setAccessible(true); + afficherAvisMethod.invoke(soumettreDemande); + + // Vérifier que les avis sont corrects dans la base de données + String checkSQL = "SELECT avis_benevole, avis_besoin, description FROM demandes_aide WHERE id = ?"; + PreparedStatement checkStatement = connection.prepareStatement(checkSQL); + checkStatement.setInt(1, demandeID); + ResultSet resultSet = checkStatement.executeQuery(); + + assertTrue(resultSet.next(), "La demande doit exister"); + assertEquals(avisBenevole, resultSet.getString("avis_benevole"), "TEST L'avis du bénévole doit correspondre"); + assertEquals(avisBesoin, resultSet.getString("avis_besoin"), "TEST L'avis de la personne doit correspondre"); + assertEquals(description, resultSet.getString("description"), "TEST La description doit correspondre"); + + // Nettoyage + String deleteSQL = "DELETE FROM demandes_aide WHERE id = ?"; + PreparedStatement deleteStatement = connection.prepareStatement(deleteSQL); + deleteStatement.setInt(1, demandeID); + deleteStatement.executeUpdate(); + + } catch (SQLException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } + } + + + }