From fcbea500d1c06551d91cecfed23dabe114c56664 Mon Sep 17 00:00:00 2001 From: Tatjana Date: Thu, 9 Apr 2026 22:15:40 +0200 Subject: [PATCH 1/3] Test: add unit tests for VetResponse mapping Added VetResponseTest to verify DTO mapping from Vet entity Covered mapping of all fields including nested User and Clinic data Added test case for null clinic scenario Used reflection to simulate JPA-generated IDs for User and Vet (@MapsId) Ensures correct handling of active status and optional fields --- .../dto/response/vet/VetResponseTest.java | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java diff --git a/src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java b/src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java new file mode 100644 index 00000000..23cadf6c --- /dev/null +++ b/src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java @@ -0,0 +1,86 @@ +package org.example.vet1177.dto.response.vet; + +import org.example.vet1177.entities.*; +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Field; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; + +class VetResponseTest { + + @Test + void should_map_all_fields_correctly_when_clinic_exists() throws Exception { + // Arrange + UUID userId = UUID.randomUUID(); + + Clinic clinic = new Clinic(); + clinic.setName("Happy Pets Clinic"); + + User user = new User(); + user.setName("Dr. Smith"); + user.setEmail("dr.smith@test.com"); + user.setActive(true); + user.setClinic(clinic); + + // Set User ID + Field idField = User.class.getDeclaredField("id"); + idField.setAccessible(true); + idField.set(user, userId); + + Vet vet = new Vet(); + vet.setUser(user); + vet.setLicenseId("LIC123"); + vet.setSpecialization("Surgery"); + vet.setBookingInfo("Available weekdays"); + + // SÄTT userId PÅ Vet + Field vetUserIdField = Vet.class.getDeclaredField("userId"); + vetUserIdField.setAccessible(true); + vetUserIdField.set(vet, userId); + + // Act + VetResponse response = VetResponse.from(vet); + + // Assert + assertEquals(userId, response.userId()); + assertEquals("Dr. Smith", response.name()); + assertEquals("dr.smith@test.com", response.email()); + assertEquals("LIC123", response.licenseId()); + assertEquals("Surgery", response.specialization()); + assertEquals("Available weekdays", response.bookingInfo()); + assertEquals("Happy Pets Clinic", response.clinicName()); + assertTrue(response.isActive()); + } + + @Test + void should_set_clinicName_to_null_when_clinic_is_null() throws Exception { + // Arrange + UUID userId = UUID.randomUUID(); + + User user = new User(); + user.setName("Dr. No Clinic"); + user.setEmail("noclinic@test.com"); + user.setActive(false); + user.setClinic(null); + + // Reflection, i tester måste man simulera JPA, @MapsId styr ID automatiskt vet.userId = user.id + Field idField = User.class.getDeclaredField("id"); + idField.setAccessible(true); + idField.set(user, userId); + + Vet vet = new Vet(); + vet.setUser(user); + vet.setLicenseId("LIC999"); + vet.setSpecialization("Dentistry"); + vet.setBookingInfo("Weekends"); + + // Act + VetResponse response = VetResponse.from(vet); + + // Assert + assertNull(response.clinicName()); + assertFalse(response.isActive()); + } +} \ No newline at end of file From e72fee4fd607b723399b48f83c465d94fd8631ef Mon Sep 17 00:00:00 2001 From: Tatjana Date: Thu, 9 Apr 2026 22:31:21 +0200 Subject: [PATCH 2/3] Test:enhance VetResponseTest with full mapping assertions and helpers --- .../dto/response/vet/VetResponseTest.java | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java b/src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java index 23cadf6c..53f92448 100644 --- a/src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java +++ b/src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java @@ -24,10 +24,7 @@ void should_map_all_fields_correctly_when_clinic_exists() throws Exception { user.setActive(true); user.setClinic(clinic); - // Set User ID - Field idField = User.class.getDeclaredField("id"); - idField.setAccessible(true); - idField.set(user, userId); + setUserId(user, userId); Vet vet = new Vet(); vet.setUser(user); @@ -35,10 +32,7 @@ void should_map_all_fields_correctly_when_clinic_exists() throws Exception { vet.setSpecialization("Surgery"); vet.setBookingInfo("Available weekdays"); - // SÄTT userId PÅ Vet - Field vetUserIdField = Vet.class.getDeclaredField("userId"); - vetUserIdField.setAccessible(true); - vetUserIdField.set(vet, userId); + setVetUserId(vet, userId); // Act VetResponse response = VetResponse.from(vet); @@ -65,10 +59,7 @@ void should_set_clinicName_to_null_when_clinic_is_null() throws Exception { user.setActive(false); user.setClinic(null); - // Reflection, i tester måste man simulera JPA, @MapsId styr ID automatiskt vet.userId = user.id - Field idField = User.class.getDeclaredField("id"); - idField.setAccessible(true); - idField.set(user, userId); + setUserId(user, userId); Vet vet = new Vet(); vet.setUser(user); @@ -76,11 +67,34 @@ void should_set_clinicName_to_null_when_clinic_is_null() throws Exception { vet.setSpecialization("Dentistry"); vet.setBookingInfo("Weekends"); + setVetUserId(vet, userId); + // Act VetResponse response = VetResponse.from(vet); // Assert + assertEquals(userId, response.userId()); + assertEquals("Dr. No Clinic", response.name()); + assertEquals("noclinic@test.com", response.email()); + assertEquals("LIC999", response.licenseId()); + assertEquals("Dentistry", response.specialization()); + assertEquals("Weekends", response.bookingInfo()); assertNull(response.clinicName()); assertFalse(response.isActive()); } -} \ No newline at end of file + +// Helper methods (gör testen renare och mer professionella) + + private void setUserId(User user, UUID id) throws Exception { + Field field = User.class.getDeclaredField("id"); + field.setAccessible(true); + field.set(user, id); + } + + private void setVetUserId(Vet vet, UUID id) throws Exception { + Field field = Vet.class.getDeclaredField("userId"); + field.setAccessible(true); + field.set(vet, id); + } + +} From 577f273e99c9895ffd5f3210eeda2726815d4af3 Mon Sep 17 00:00:00 2001 From: Tatjana Date: Thu, 9 Apr 2026 22:43:28 +0200 Subject: [PATCH 3/3] Test:enhance VetResponseTest with full mapping assertions and helpers --- .../org/example/vet1177/dto/response/vet/VetResponseTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java b/src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java index 53f92448..a8a714d4 100644 --- a/src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java +++ b/src/test/java/org/example/vet1177/dto/response/vet/VetResponseTest.java @@ -83,7 +83,7 @@ void should_set_clinicName_to_null_when_clinic_is_null() throws Exception { assertFalse(response.isActive()); } -// Helper methods (gör testen renare och mer professionella) +// Helper methods private void setUserId(User user, UUID id) throws Exception { Field field = User.class.getDeclaredField("id");