feat: changes in tests
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user