From 79ee81e155000419fdf0296326b546be2f425df2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Machaj?= Date: Mon, 17 Mar 2025 20:53:48 +0100 Subject: [PATCH 1/3] add tests isolation --- .../dataaccess/repository/SpecialistRepository.java | 1 - .../dataaccess/repository/AppointmentRepositoryTestIT.java | 3 +++ .../dataaccess/repository/ClientRepositoryTestIT.java | 3 +++ .../dataaccess/repository/SpecialistRepositoryTestIT.java | 3 +++ .../dataaccess/repository/TreatmentRepositoryTestIT.java | 3 +++ .../dataaccess/repository/UserRepositoryTestIT.java | 3 +++ 6 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepository.java b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepository.java index 86925ef..b5473e4 100644 --- a/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepository.java +++ b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepository.java @@ -27,7 +27,6 @@ default List findSpecialistByName(String firstName, String las .where(user.firstname.eq(firstName) .and(user.lastname.eq(lastName))) .fetch(); - } } diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java index e9d2e3a..2394673 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java @@ -10,11 +10,14 @@ import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.transaction.annotation.Transactional; import java.time.Instant; import java.util.List; import java.util.Optional; + +@Transactional @DataJpaTest public class AppointmentRepositoryTestIT extends BaseTest { diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java index 22e1777..6db7dcc 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java @@ -5,9 +5,12 @@ import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.transaction.annotation.Transactional; import java.util.List; + +@Transactional @DataJpaTest public class ClientRepositoryTestIT extends BaseTest { diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java index b5aec30..0aadcef 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java @@ -6,9 +6,12 @@ import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.transaction.annotation.Transactional; import java.util.List; + +@Transactional @DataJpaTest public class SpecialistRepositoryTestIT extends BaseTest { diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java index fc53725..86933ff 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java @@ -8,10 +8,13 @@ import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; + +@Transactional @DataJpaTest public class TreatmentRepositoryTestIT extends BaseTest { diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryTestIT.java index 58483aa..53f444a 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryTestIT.java @@ -6,9 +6,12 @@ import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.transaction.annotation.Transactional; import java.util.List; + +@Transactional @DataJpaTest public class UserRepositoryTestIT extends BaseTest { From ac85f2f0e49d54eca21e21ea9c47b06a9ac456e8 Mon Sep 17 00:00:00 2001 From: Krzysztof Sobkowiak Date: Tue, 1 Apr 2025 00:11:05 +0200 Subject: [PATCH 2/3] Extract @EnableJpaRepositories annotation to separate configuration --- .../AppointmentBookingAppApplication.java | 3 --- .../dataaccess/config/DataaccessConfiguration.java | 11 +++++++++++ .../dataaccess/entity/EntitySmokeTestIT.java | 4 ++++ .../repository/AppointmentRepositoryTestIT.java | 3 +++ .../dataaccess/repository/ClientRepositoryTestIT.java | 3 +++ .../repository/SpecialistRepositoryTestIT.java | 3 +++ .../repository/TreatmentRepositoryTestIT.java | 3 +++ .../dataaccess/repository/UserRepositoryTestIT.java | 3 +++ 8 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/capgemini/training/appointmentbooking/dataaccess/config/DataaccessConfiguration.java diff --git a/src/main/java/com/capgemini/training/appointmentbooking/AppointmentBookingAppApplication.java b/src/main/java/com/capgemini/training/appointmentbooking/AppointmentBookingAppApplication.java index 147a512..1639ccf 100644 --- a/src/main/java/com/capgemini/training/appointmentbooking/AppointmentBookingAppApplication.java +++ b/src/main/java/com/capgemini/training/appointmentbooking/AppointmentBookingAppApplication.java @@ -1,12 +1,9 @@ package com.capgemini.training.appointmentbooking; -import com.capgemini.training.appointmentbooking.dataaccess.repository.impl.BaseJpaRepositoryImpl; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @SpringBootApplication -@EnableJpaRepositories(repositoryBaseClass = BaseJpaRepositoryImpl.class) public class AppointmentBookingAppApplication { public static void main(String[] args) { diff --git a/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/config/DataaccessConfiguration.java b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/config/DataaccessConfiguration.java new file mode 100644 index 0000000..9fbaceb --- /dev/null +++ b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/config/DataaccessConfiguration.java @@ -0,0 +1,11 @@ +package com.capgemini.training.appointmentbooking.dataaccess.config; + +import com.capgemini.training.appointmentbooking.dataaccess.repository.impl.BaseJpaRepositoryImpl; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@Configuration +@EnableJpaRepositories( + repositoryBaseClass = BaseJpaRepositoryImpl.class, + basePackages = "com.capgemini.training.appointmentbooking.dataaccess.repository") +public class DataaccessConfiguration {} diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/EntitySmokeTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/EntitySmokeTestIT.java index 2286fa0..d12e94c 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/EntitySmokeTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/EntitySmokeTestIT.java @@ -7,11 +7,15 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.context.annotation.Import; + +import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; @DataJpaTest +@Import(DataaccessConfiguration.class) public class EntitySmokeTestIT { @PersistenceContext diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java index 2394673..becab6f 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java @@ -2,6 +2,7 @@ import com.capgemini.training.appointmentbooking.common.BaseTest; import com.capgemini.training.appointmentbooking.common.datatype.AppointmentStatus; +import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; import com.capgemini.training.appointmentbooking.dataaccess.entity.AppointmentEntity; import com.capgemini.training.appointmentbooking.dataaccess.entity.ClientEntity; import com.capgemini.training.appointmentbooking.dataaccess.entity.SpecialistEntity; @@ -10,6 +11,7 @@ import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.context.annotation.Import; import org.springframework.transaction.annotation.Transactional; import java.time.Instant; @@ -19,6 +21,7 @@ @Transactional @DataJpaTest +@Import(DataaccessConfiguration.class) public class AppointmentRepositoryTestIT extends BaseTest { @Inject diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java index 6db7dcc..ce34fba 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java @@ -1,10 +1,12 @@ package com.capgemini.training.appointmentbooking.dataaccess.repository; import com.capgemini.training.appointmentbooking.common.BaseTest; +import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; import com.capgemini.training.appointmentbooking.dataaccess.entity.ClientEntity; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.context.annotation.Import; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -12,6 +14,7 @@ @Transactional @DataJpaTest +@Import(DataaccessConfiguration.class) public class ClientRepositoryTestIT extends BaseTest { @Inject diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java index 0aadcef..6fdd6e9 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java @@ -2,10 +2,12 @@ import com.capgemini.training.appointmentbooking.common.BaseTest; import com.capgemini.training.appointmentbooking.common.datatype.Specialization; +import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; import com.capgemini.training.appointmentbooking.dataaccess.entity.SpecialistEntity; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.context.annotation.Import; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -13,6 +15,7 @@ @Transactional @DataJpaTest +@Import(DataaccessConfiguration.class) public class SpecialistRepositoryTestIT extends BaseTest { @Inject diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java index 86933ff..e69e804 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java @@ -2,12 +2,14 @@ import com.capgemini.training.appointmentbooking.common.BaseTest; import com.capgemini.training.appointmentbooking.common.datatype.Specialization; +import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; import com.capgemini.training.appointmentbooking.dataaccess.entity.SpecialistEntity; import com.capgemini.training.appointmentbooking.dataaccess.entity.TreatmentEntity; import com.capgemini.training.appointmentbooking.dataaccess.repository.criteria.TreatmentCriteria; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.context.annotation.Import; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -16,6 +18,7 @@ @Transactional @DataJpaTest +@Import(DataaccessConfiguration.class) public class TreatmentRepositoryTestIT extends BaseTest { @Inject diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryTestIT.java index 53f444a..f00e8f1 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryTestIT.java @@ -1,11 +1,13 @@ package com.capgemini.training.appointmentbooking.dataaccess.repository; import com.capgemini.training.appointmentbooking.common.BaseTest; +import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; import com.capgemini.training.appointmentbooking.dataaccess.entity.UserEntity; import com.capgemini.training.appointmentbooking.dataaccess.repository.criteria.UserCriteria; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.context.annotation.Import; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -13,6 +15,7 @@ @Transactional @DataJpaTest +@Import(DataaccessConfiguration.class) public class UserRepositoryTestIT extends BaseTest { @Inject From c1198145438841307cf0b1efcdad2d68952107f7 Mon Sep 17 00:00:00 2001 From: mluzyna <63474538+mluzyna@users.noreply.github.com> Date: Tue, 8 Apr 2025 16:20:55 +0200 Subject: [PATCH 3/3] Feature/2 dataacess repositories review (#12) * Review changes - sync with documentation * name correction for EntitySmoke integration test --------- Co-authored-by: MichalLuzyna --- .../repository/AppointmentRepository.java | 1 + .../dataaccess/repository/BaseJpaRepository.java | 4 ++-- .../repository/TreatmentRepository.java | 2 +- .../dataaccess/repository/UserRepository.java | 2 +- .../common/BaseDataJpaTest.java | 11 +++++++++++ ...{EntitySmokeTestIT.java => EntitySmokeIT.java} | 9 +++------ ...ryTestIT.java => AppointmentRepositoryIT.java} | 12 +++--------- ...ositoryTestIT.java => ClientRepositoryIT.java} | 12 +++--------- ...oryTestIT.java => SpecialistRepositoryIT.java} | 11 ++--------- ...toryTestIT.java => TreatmentRepositoryIT.java} | 15 ++++----------- ...epositoryTestIT.java => UserRepositoryIT.java} | 11 ++--------- 11 files changed, 33 insertions(+), 57 deletions(-) create mode 100644 src/test/java/com/capgemini/training/appointmentbooking/common/BaseDataJpaTest.java rename src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/{EntitySmokeTestIT.java => EntitySmokeIT.java} (79%) rename src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/{AppointmentRepositoryTestIT.java => AppointmentRepositoryIT.java} (93%) rename src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/{ClientRepositoryTestIT.java => ClientRepositoryIT.java} (67%) rename src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/{SpecialistRepositoryTestIT.java => SpecialistRepositoryIT.java} (77%) rename src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/{TreatmentRepositoryTestIT.java => TreatmentRepositoryIT.java} (91%) rename src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/{UserRepositoryTestIT.java => UserRepositoryIT.java} (73%) diff --git a/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepository.java b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepository.java index 53927f1..9426b3c 100644 --- a/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepository.java +++ b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepository.java @@ -77,6 +77,7 @@ SELECT CASE WHEN COUNT(a) > 0 THEN TRUE ELSE FALSE END JOIN a.treatment t WHERE t.specialist.id = :specialistId AND a.dateTime = :date + AND a.status <> com.capgemini.training.appointmentbooking.common.datatype.AppointmentStatus.CANCELLED """) boolean hasConflictingAppointmentBySpecialistIdAndDateTime(@Param("specialistId") Long specialistId, @Param("date") Instant date); diff --git a/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/BaseJpaRepository.java b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/BaseJpaRepository.java index 1720af1..6b37c38 100644 --- a/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/BaseJpaRepository.java +++ b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/BaseJpaRepository.java @@ -1,11 +1,11 @@ package com.capgemini.training.appointmentbooking.dataaccess.repository; import jakarta.persistence.EntityManager; -import org.springframework.data.jpa.repository.support.JpaRepositoryImplementation; +import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.NoRepositoryBean; @NoRepositoryBean -public interface BaseJpaRepository extends JpaRepositoryImplementation { +public interface BaseJpaRepository extends JpaRepository { EntityManager getEntityManager(); diff --git a/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepository.java b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepository.java index 8479256..5eab402 100644 --- a/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepository.java +++ b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepository.java @@ -14,7 +14,7 @@ @Repository public interface TreatmentRepository extends BaseJpaRepository { - List findAllByName(String name); + List findAllByNameStartingWithIgnoringCase(String name); List findByNameNamedQuery(String name); diff --git a/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepository.java b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepository.java index 75d3412..52b8b87 100644 --- a/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepository.java +++ b/src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepository.java @@ -15,7 +15,6 @@ @Repository public interface UserRepository extends BaseJpaRepository { - default List findByCriteria(UserCriteria criteria) { Objects.requireNonNull(criteria, "criteria must not be null"); @@ -41,4 +40,5 @@ default List findByCriteria(UserCriteria criteria) { return entityManager.createQuery(cq).getResultList(); } + } diff --git a/src/test/java/com/capgemini/training/appointmentbooking/common/BaseDataJpaTest.java b/src/test/java/com/capgemini/training/appointmentbooking/common/BaseDataJpaTest.java new file mode 100644 index 0000000..5eaeaff --- /dev/null +++ b/src/test/java/com/capgemini/training/appointmentbooking/common/BaseDataJpaTest.java @@ -0,0 +1,11 @@ +package com.capgemini.training.appointmentbooking.common; + +import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.context.annotation.Import; +import org.springframework.transaction.annotation.Transactional; + +@DataJpaTest +@Import(DataaccessConfiguration.class) +public class BaseDataJpaTest extends BaseTest{ +} diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/EntitySmokeTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/EntitySmokeIT.java similarity index 79% rename from src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/EntitySmokeTestIT.java rename to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/EntitySmokeIT.java index d12e94c..87c969c 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/EntitySmokeTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/EntitySmokeIT.java @@ -7,16 +7,13 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; - -import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; +import org.springframework.data.repository.config.BootstrapMode; -@DataJpaTest -@Import(DataaccessConfiguration.class) -public class EntitySmokeTestIT { +@DataJpaTest(bootstrapMode = BootstrapMode.LAZY) +public class EntitySmokeIT { @PersistenceContext private EntityManager em; diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryIT.java similarity index 93% rename from src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java rename to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryIT.java index becab6f..b1aa168 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryIT.java @@ -1,8 +1,7 @@ package com.capgemini.training.appointmentbooking.dataaccess.repository; -import com.capgemini.training.appointmentbooking.common.BaseTest; +import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest; import com.capgemini.training.appointmentbooking.common.datatype.AppointmentStatus; -import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; import com.capgemini.training.appointmentbooking.dataaccess.entity.AppointmentEntity; import com.capgemini.training.appointmentbooking.dataaccess.entity.ClientEntity; import com.capgemini.training.appointmentbooking.dataaccess.entity.SpecialistEntity; @@ -10,19 +9,14 @@ import com.capgemini.training.appointmentbooking.dataaccess.repository.criteria.AppointmentCriteria; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.transaction.annotation.Transactional; import java.time.Instant; import java.util.List; import java.util.Optional; -@Transactional -@DataJpaTest -@Import(DataaccessConfiguration.class) -public class AppointmentRepositoryTestIT extends BaseTest { + +public class AppointmentRepositoryIT extends BaseDataJpaTest { @Inject private AppointmentRepository appointmentRepository; diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryIT.java similarity index 67% rename from src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java rename to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryIT.java index ce34fba..4a2538f 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryIT.java @@ -1,21 +1,15 @@ package com.capgemini.training.appointmentbooking.dataaccess.repository; -import com.capgemini.training.appointmentbooking.common.BaseTest; -import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; +import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest; import com.capgemini.training.appointmentbooking.dataaccess.entity.ClientEntity; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.transaction.annotation.Transactional; import java.util.List; -@Transactional -@DataJpaTest -@Import(DataaccessConfiguration.class) -public class ClientRepositoryTestIT extends BaseTest { + +public class ClientRepositoryIT extends BaseDataJpaTest { @Inject private ClientRepository clientRepository; diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryIT.java similarity index 77% rename from src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java rename to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryIT.java index 6fdd6e9..c1ba94f 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryIT.java @@ -1,22 +1,15 @@ package com.capgemini.training.appointmentbooking.dataaccess.repository; -import com.capgemini.training.appointmentbooking.common.BaseTest; +import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest; import com.capgemini.training.appointmentbooking.common.datatype.Specialization; -import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; import com.capgemini.training.appointmentbooking.dataaccess.entity.SpecialistEntity; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.transaction.annotation.Transactional; import java.util.List; -@Transactional -@DataJpaTest -@Import(DataaccessConfiguration.class) -public class SpecialistRepositoryTestIT extends BaseTest { +public class SpecialistRepositoryIT extends BaseDataJpaTest { @Inject private SpecialistRepository specialistRepository; diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryIT.java similarity index 91% rename from src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java rename to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryIT.java index e69e804..f2ddbf9 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryIT.java @@ -1,25 +1,18 @@ package com.capgemini.training.appointmentbooking.dataaccess.repository; -import com.capgemini.training.appointmentbooking.common.BaseTest; +import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest; import com.capgemini.training.appointmentbooking.common.datatype.Specialization; -import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; import com.capgemini.training.appointmentbooking.dataaccess.entity.SpecialistEntity; import com.capgemini.training.appointmentbooking.dataaccess.entity.TreatmentEntity; import com.capgemini.training.appointmentbooking.dataaccess.repository.criteria.TreatmentCriteria; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; -@Transactional -@DataJpaTest -@Import(DataaccessConfiguration.class) -public class TreatmentRepositoryTestIT extends BaseTest { +public class TreatmentRepositoryIT extends BaseDataJpaTest { @Inject private TreatmentRepository treatmentRepository; @@ -30,10 +23,10 @@ public class TreatmentRepositoryTestIT extends BaseTest { @Test void shouldFindTreatmentsByName() { // given - String treatmentName = "Konsultacja dentystyczna"; + String treatmentName = "konsUltacja de"; // when - List result = treatmentRepository.findAllByName(treatmentName); + List result = treatmentRepository.findAllByNameStartingWithIgnoringCase(treatmentName); // then assertThat(result).hasSize(1); diff --git a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryTestIT.java b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryIT.java similarity index 73% rename from src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryTestIT.java rename to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryIT.java index f00e8f1..561ed8e 100644 --- a/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryTestIT.java +++ b/src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepositoryIT.java @@ -1,22 +1,15 @@ package com.capgemini.training.appointmentbooking.dataaccess.repository; -import com.capgemini.training.appointmentbooking.common.BaseTest; -import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration; +import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest; import com.capgemini.training.appointmentbooking.dataaccess.entity.UserEntity; import com.capgemini.training.appointmentbooking.dataaccess.repository.criteria.UserCriteria; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.transaction.annotation.Transactional; import java.util.List; -@Transactional -@DataJpaTest -@Import(DataaccessConfiguration.class) -public class UserRepositoryTestIT extends BaseTest { +public class UserRepositoryIT extends BaseDataJpaTest { @Inject private UserRepository userRepository;