feat: changes in tests

This commit is contained in:
2025-12-04 08:16:12 +01:00
parent 27535e063c
commit 471595060a
3 changed files with 56 additions and 52 deletions

View File

@@ -25,9 +25,11 @@ public class Utilisateur {
private boolean actif = true; private boolean actif = true;
@OneToMany(mappedBy = "proprietaire") @OneToMany(mappedBy = "proprietaire", cascade = CascadeType.ALL, orphanRemoval = true)
private List< private List<Photo> photos;
Photo> photos;
@OneToMany(mappedBy = "auteur", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Commentaire> commentaires;
// Getters & Setters avec lombok // Getters & Setters avec lombok

View File

@@ -25,7 +25,6 @@ import static org.junit.jupiter.api.Assertions.*;
*/ */
@SpringBootTest @SpringBootTest
@ActiveProfiles("test") @ActiveProfiles("test")
@Transactional
class CascadeDeleteIntegrationTest { class CascadeDeleteIntegrationTest {
@Autowired @Autowired
@@ -55,7 +54,7 @@ class CascadeDeleteIntegrationTest {
userA.setEmail("userA@example.com"); userA.setEmail("userA@example.com");
userA.setNom("A"); userA.setNom("A");
userA.setPrenom("User"); userA.setPrenom("User");
userA.setPassword(passwordEncoder.encode("password")); userA.setMotDePasse(passwordEncoder.encode("password"));
userA = utilisateurRepository.save(userA); userA = utilisateurRepository.save(userA);
// Créer User B // Créer User B
@@ -63,7 +62,7 @@ class CascadeDeleteIntegrationTest {
userB.setEmail("userB@example.com"); userB.setEmail("userB@example.com");
userB.setNom("B"); userB.setNom("B");
userB.setPrenom("User"); userB.setPrenom("User");
userB.setPassword(passwordEncoder.encode("password")); userB.setMotDePasse(passwordEncoder.encode("password"));
userB = utilisateurRepository.save(userB); userB = utilisateurRepository.save(userB);
} }
@@ -90,8 +89,8 @@ class CascadeDeleteIntegrationTest {
assertEquals(2, photoRepository.findByProprietaire_Email(userB.getEmail()).size()); assertEquals(2, photoRepository.findByProprietaire_Email(userB.getEmail()).size());
// When - Supprimer User A // When - Supprimer User A
utilisateurRepository.delete(userA); utilisateurRepository.deleteById(userA.getId());
utilisateurRepository.flush();
// Then - Les photos de User A doivent être supprimées // Then - Les photos de User A doivent être supprimées
assertEquals(2, photoRepository.count(), assertEquals(2, photoRepository.count(),
@@ -122,8 +121,8 @@ class CascadeDeleteIntegrationTest {
assertEquals(3, commentaireRepository.count()); assertEquals(3, commentaireRepository.count());
// When - Supprimer User A // When - Supprimer User A
utilisateurRepository.delete(userA); utilisateurRepository.deleteById(userA.getId());
utilisateurRepository.flush();
// Then - Les commentaires de User A doivent être supprimés // Then - Les commentaires de User A doivent être supprimés
assertEquals(1, commentaireRepository.count(), assertEquals(1, commentaireRepository.count(),
@@ -153,8 +152,8 @@ class CascadeDeleteIntegrationTest {
assertEquals(2, commentaireRepository.count()); assertEquals(2, commentaireRepository.count());
// When - Supprimer User A (et donc sa photo) // When - Supprimer User A (et donc sa photo)
utilisateurRepository.delete(userA); utilisateurRepository.deleteById(userA.getId());
utilisateurRepository.flush();
// Then - La photo ET tous ses commentaires doivent être supprimés // Then - La photo ET tous ses commentaires doivent être supprimés
assertEquals(0, photoRepository.count(), assertEquals(0, photoRepository.count(),
@@ -189,8 +188,8 @@ class CascadeDeleteIntegrationTest {
assertEquals(5, commentaireRepository.count()); assertEquals(5, commentaireRepository.count());
// When - Supprimer User A // When - Supprimer User A
utilisateurRepository.delete(userA); utilisateurRepository.deleteById(userA.getId());
utilisateurRepository.flush();
// Then - Vérifier les suppressions // Then - Vérifier les suppressions
assertEquals(1, photoRepository.count(), assertEquals(1, photoRepository.count(),
@@ -205,7 +204,7 @@ class CascadeDeleteIntegrationTest {
"Seul le commentaire 'B sur B' doit rester"); "Seul le commentaire 'B sur B' doit rester");
Commentaire lastComment = remainingComments.get(0); Commentaire lastComment = remainingComments.get(0);
assertEquals("B sur B", lastComment.getTexte()); assertEquals("B sur B", lastComment.getContenu());
assertEquals(userB.getId(), lastComment.getAuteur().getId()); assertEquals(userB.getId(), lastComment.getAuteur().getId());
assertEquals(photoB.getId(), lastComment.getPhoto().getId()); assertEquals(photoB.getId(), lastComment.getPhoto().getId());
} }
@@ -217,7 +216,7 @@ class CascadeDeleteIntegrationTest {
userC.setEmail("userC@example.com"); userC.setEmail("userC@example.com");
userC.setNom("C"); userC.setNom("C");
userC.setPrenom("User"); userC.setPrenom("User");
userC.setPassword(passwordEncoder.encode("password")); userC.setMotDePasse(passwordEncoder.encode("password"));
userC = utilisateurRepository.save(userC); userC = utilisateurRepository.save(userC);
// Given - Chaque utilisateur a des photos et commentaires // Given - Chaque utilisateur a des photos et commentaires
@@ -235,8 +234,8 @@ class CascadeDeleteIntegrationTest {
assertEquals(3, commentaireRepository.count()); assertEquals(3, commentaireRepository.count());
// When - Supprimer User A // When - Supprimer User A
utilisateurRepository.delete(userA); utilisateurRepository.deleteById(userA.getId());
utilisateurRepository.flush();
// Then - User B et C ne doivent pas être affectés // Then - User B et C ne doivent pas être affectés
assertEquals(2, utilisateurRepository.count(), assertEquals(2, utilisateurRepository.count(),
@@ -261,9 +260,9 @@ class CascadeDeleteIntegrationTest {
assertEquals(2, photoRepository.count()); assertEquals(2, photoRepository.count());
// When - Supprimer les deux utilisateurs // When - Supprimer les deux utilisateurs
utilisateurRepository.delete(userA); utilisateurRepository.deleteById(userA.getId());
utilisateurRepository.delete(userB); utilisateurRepository.deleteById(userB.getId());
utilisateurRepository.flush();
// Then - Tout doit être supprimé // Then - Tout doit être supprimé
assertEquals(0, utilisateurRepository.count()); assertEquals(0, utilisateurRepository.count());
@@ -287,7 +286,7 @@ class CascadeDeleteIntegrationTest {
private Commentaire createCommentaire(String texte, Utilisateur auteur, Photo photo) { private Commentaire createCommentaire(String texte, Utilisateur auteur, Photo photo) {
Commentaire commentaire = new Commentaire(); Commentaire commentaire = new Commentaire();
commentaire.setTexte(texte); commentaire.setContenu(texte);
commentaire.setAuteur(auteur); commentaire.setAuteur(auteur);
commentaire.setPhoto(photo); commentaire.setPhoto(photo);
commentaire.setDateCommentaire(LocalDateTime.now()); commentaire.setDateCommentaire(LocalDateTime.now());

View File

@@ -62,7 +62,7 @@ class PhotoUploadIntegrationTest {
testUser.setEmail("testupload@example.com"); testUser.setEmail("testupload@example.com");
testUser.setNom("Upload"); testUser.setNom("Upload");
testUser.setPrenom("Test"); testUser.setPrenom("Test");
testUser.setPassword(passwordEncoder.encode("password")); testUser.setMotDePasse(passwordEncoder.encode("password"));
testUser = utilisateurRepository.save(testUser); testUser = utilisateurRepository.save(testUser);
} }
@@ -247,42 +247,45 @@ class PhotoUploadIntegrationTest {
// ===================== Méthodes Utilitaires ===================== // ===================== Méthodes Utilitaires =====================
/** /**
* Crée un tableau de bytes représentant un JPEG valide minimal * Crée un tableau de bytes représentant un JPEG valide
*/ */
private byte[] createValidJpegBytes() { private byte[] createValidJpegBytes() {
// Magic number JPEG + données minimales pour créer une image valide try {
return new byte[]{ // Créer une vraie image JPEG avec BufferedImage
(byte) 0xFF, (byte) 0xD8, (byte) 0xFF, (byte) 0xE0, // JPEG header java.awt.image.BufferedImage image = new java.awt.image.BufferedImage(100, 100, java.awt.image.BufferedImage.TYPE_INT_RGB);
0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01, // JFIF marker java.awt.Graphics2D g = image.createGraphics();
0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, g.setColor(java.awt.Color.BLUE);
(byte) 0xFF, (byte) 0xDB, 0x00, 0x43, 0x00, // Quantization table g.fillRect(0, 0, 100, 100);
0x08, 0x06, 0x06, 0x07, 0x06, 0x05, 0x08, 0x07, g.dispose();
0x07, 0x07, 0x09, 0x09, 0x08, 0x0A, 0x0C, 0x14,
0x0D, 0x0C, 0x0B, 0x0B, 0x0C, 0x19, 0x12, 0x13, // Convertir en bytes
0x0F, 0x14, 0x1D, 0x1A, 0x1F, 0x1E, 0x1D, 0x1A, java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
0x1C, 0x1C, 0x20, 0x24, 0x2E, 0x27, 0x20, 0x22, javax.imageio.ImageIO.write(image, "jpg", baos);
0x2C, 0x23, 0x1C, 0x1C, 0x28, 0x37, 0x29, 0x2C, return baos.toByteArray();
0x30, 0x31, 0x34, 0x34, 0x34, 0x1F, 0x27, 0x39, } catch (Exception e) {
0x3D, 0x38, 0x32, 0x3C, 0x2E, 0x33, 0x34, 0x32, throw new RuntimeException("Erreur création image test", e);
(byte) 0xFF, (byte) 0xD9 // End of image }
};
} }
/** /**
* Crée un tableau de bytes représentant un PNG valide minimal * Crée un tableau de bytes représentant un PNG valide
*/ */
private byte[] createValidPngBytes() { private byte[] createValidPngBytes() {
// Magic number PNG + données minimales try {
return new byte[]{ // Créer une vraie image PNG avec BufferedImage
(byte) 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, // PNG signature java.awt.image.BufferedImage image = new java.awt.image.BufferedImage(100, 100, java.awt.image.BufferedImage.TYPE_INT_ARGB);
0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, // IHDR chunk java.awt.Graphics2D g = image.createGraphics();
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, // 1x1 pixel g.setColor(java.awt.Color.RED);
0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, 0x15, (byte) 0xC4, (byte) 0x89, g.fillRect(0, 0, 100, 100);
0x00, 0x00, 0x00, 0x0A, 0x49, 0x44, 0x41, 0x54, // IDAT chunk g.dispose();
0x78, (byte) 0x9C, 0x63, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, // IEND chunk // Convertir en bytes
(byte) 0xAE, 0x42, 0x60, (byte) 0x82 java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
}; javax.imageio.ImageIO.write(image, "png", baos);
return baos.toByteArray();
} catch (Exception e) {
throw new RuntimeException("Erreur création image test", e);
}
} }
} }