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;
@OneToMany(mappedBy = "proprietaire")
private List<
Photo> photos;
@OneToMany(mappedBy = "proprietaire", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Photo> photos;
@OneToMany(mappedBy = "auteur", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Commentaire> commentaires;
// Getters & Setters avec lombok

View File

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

View File

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