Skip to content

Commit 5eb43df

Browse files
mluzynamichalluzyna
andcommitted
Feature/2 dataacess repositories review (#12)
* Review changes - sync with documentation * name correction for EntitySmoke integration test --------- Co-authored-by: MichalLuzyna <michal.luzyna@capgemini.com>
1 parent 9808bb4 commit 5eb43df

File tree

11 files changed

+31
-56
lines changed

11 files changed

+31
-56
lines changed

src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ SELECT CASE WHEN COUNT(a) > 0 THEN TRUE ELSE FALSE END
7777
JOIN a.treatment t
7878
WHERE t.specialist.id = :specialistId
7979
AND a.dateTime = :date
80+
AND a.status <> com.capgemini.training.appointmentbooking.common.datatype.AppointmentStatus.CANCELLED
8081
""")
8182
boolean hasConflictingAppointmentBySpecialistIdAndDateTime(@Param("specialistId") Long specialistId, @Param("date") Instant date);
8283

src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/BaseJpaRepository.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
import jakarta.persistence.EntityManager;
44
import org.springframework.data.jpa.repository.JpaRepository;
5-
import org.springframework.data.jpa.repository.support.JpaRepositoryImplementation;
65
import org.springframework.data.repository.NoRepositoryBean;
76

87
@NoRepositoryBean
9-
public interface BaseJpaRepository<T, ID> extends JpaRepositoryImplementation<T, ID> {
8+
public interface BaseJpaRepository<T, ID> extends JpaRepository<T, ID> {
109

1110
EntityManager getEntityManager();
1211

src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
@Repository
1515
public interface TreatmentRepository extends BaseJpaRepository<TreatmentEntity, Long> {
1616

17-
List<TreatmentEntity> findAllByName(String name);
17+
List<TreatmentEntity> findAllByNameStartingWithIgnoringCase(String name);
1818

1919
List<TreatmentEntity> findByNameNamedQuery(String name);
2020

src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/UserRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
@Repository
1717
public interface UserRepository extends BaseJpaRepository<UserEntity, Long> {
18-
1918
default List<UserEntity> findByCriteria(UserCriteria criteria) {
2019
Objects.requireNonNull(criteria, "criteria must not be null");
2120

@@ -41,4 +40,5 @@ default List<UserEntity> findByCriteria(UserCriteria criteria) {
4140
return entityManager.createQuery(cq).getResultList();
4241
}
4342

43+
4444
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.capgemini.training.appointmentbooking.common;
2+
3+
import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration;
4+
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
5+
import org.springframework.context.annotation.Import;
6+
import org.springframework.transaction.annotation.Transactional;
7+
8+
@DataJpaTest
9+
@Import(DataaccessConfiguration.class)
10+
public class BaseDataJpaTest extends BaseTest{
11+
}

src/test/java/com/capgemini/training/appointmentbooking/dataaccess/entity/EntitySmokeIT.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,12 @@
77

88
import org.junit.jupiter.api.Test;
99
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
10-
import org.springframework.context.annotation.Import;
11-
12-
import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration;
1310

1411
import jakarta.persistence.EntityManager;
1512
import jakarta.persistence.PersistenceContext;
13+
import org.springframework.data.repository.config.BootstrapMode;
1614

17-
@DataJpaTest
18-
@Import(DataaccessConfiguration.class)
15+
@DataJpaTest(bootstrapMode = BootstrapMode.LAZY)
1916
public class EntitySmokeIT {
2017

2118
@PersistenceContext

src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryTestIT.java renamed to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/AppointmentRepositoryIT.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
11
package com.capgemini.training.appointmentbooking.dataaccess.repository;
22

3-
import com.capgemini.training.appointmentbooking.common.BaseTest;
3+
import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest;
44
import com.capgemini.training.appointmentbooking.common.datatype.AppointmentStatus;
5-
import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration;
65
import com.capgemini.training.appointmentbooking.dataaccess.entity.AppointmentEntity;
76
import com.capgemini.training.appointmentbooking.dataaccess.entity.ClientEntity;
87
import com.capgemini.training.appointmentbooking.dataaccess.entity.SpecialistEntity;
98
import com.capgemini.training.appointmentbooking.dataaccess.entity.TreatmentEntity;
109
import com.capgemini.training.appointmentbooking.dataaccess.repository.criteria.AppointmentCriteria;
1110
import jakarta.inject.Inject;
1211
import org.junit.jupiter.api.Test;
13-
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
14-
import org.springframework.context.annotation.Import;
15-
import org.springframework.transaction.annotation.Transactional;
1612

1713
import java.time.Instant;
1814
import java.util.List;
1915
import java.util.Optional;
2016

2117

22-
@Transactional
23-
@DataJpaTest
24-
@Import(DataaccessConfiguration.class)
25-
public class AppointmentRepositoryTestIT extends BaseTest {
18+
19+
public class AppointmentRepositoryIT extends BaseDataJpaTest {
2620

2721
@Inject
2822
private AppointmentRepository appointmentRepository;

src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryTestIT.java renamed to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/ClientRepositoryIT.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
package com.capgemini.training.appointmentbooking.dataaccess.repository;
22

3-
import com.capgemini.training.appointmentbooking.common.BaseTest;
4-
import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration;
3+
import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest;
54
import com.capgemini.training.appointmentbooking.dataaccess.entity.ClientEntity;
65
import jakarta.inject.Inject;
76
import org.junit.jupiter.api.Test;
8-
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
9-
import org.springframework.context.annotation.Import;
10-
import org.springframework.transaction.annotation.Transactional;
117

128
import java.util.List;
139

1410

15-
@Transactional
16-
@DataJpaTest
17-
@Import(DataaccessConfiguration.class)
18-
public class ClientRepositoryTestIT extends BaseTest {
11+
12+
public class ClientRepositoryIT extends BaseDataJpaTest {
1913

2014
@Inject
2115
private ClientRepository clientRepository;

src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryTestIT.java renamed to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/SpecialistRepositoryIT.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,15 @@
11
package com.capgemini.training.appointmentbooking.dataaccess.repository;
22

3-
import com.capgemini.training.appointmentbooking.common.BaseTest;
3+
import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest;
44
import com.capgemini.training.appointmentbooking.common.datatype.Specialization;
5-
import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration;
65
import com.capgemini.training.appointmentbooking.dataaccess.entity.SpecialistEntity;
76
import jakarta.inject.Inject;
87
import org.junit.jupiter.api.Test;
9-
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
10-
import org.springframework.context.annotation.Import;
11-
import org.springframework.transaction.annotation.Transactional;
128

139
import java.util.List;
1410

1511

16-
@Transactional
17-
@DataJpaTest
18-
@Import(DataaccessConfiguration.class)
19-
public class SpecialistRepositoryTestIT extends BaseTest {
12+
public class SpecialistRepositoryIT extends BaseDataJpaTest {
2013

2114
@Inject
2215
private SpecialistRepository specialistRepository;

src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryTestIT.java renamed to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentRepositoryIT.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,18 @@
11
package com.capgemini.training.appointmentbooking.dataaccess.repository;
22

3-
import com.capgemini.training.appointmentbooking.common.BaseTest;
3+
import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest;
44
import com.capgemini.training.appointmentbooking.common.datatype.Specialization;
5-
import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration;
65
import com.capgemini.training.appointmentbooking.dataaccess.entity.SpecialistEntity;
76
import com.capgemini.training.appointmentbooking.dataaccess.entity.TreatmentEntity;
87
import com.capgemini.training.appointmentbooking.dataaccess.repository.criteria.TreatmentCriteria;
98
import jakarta.inject.Inject;
109
import org.junit.jupiter.api.Test;
11-
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
12-
import org.springframework.context.annotation.Import;
13-
import org.springframework.transaction.annotation.Transactional;
1410

1511
import java.util.List;
1612
import java.util.Optional;
1713

1814

19-
@Transactional
20-
@DataJpaTest
21-
@Import(DataaccessConfiguration.class)
22-
public class TreatmentRepositoryTestIT extends BaseTest {
15+
public class TreatmentRepositoryIT extends BaseDataJpaTest {
2316

2417
@Inject
2518
private TreatmentRepository treatmentRepository;
@@ -30,10 +23,10 @@ public class TreatmentRepositoryTestIT extends BaseTest {
3023
@Test
3124
void shouldFindTreatmentsByName() {
3225
// given
33-
String treatmentName = "Konsultacja dentystyczna";
26+
String treatmentName = "konsUltacja de";
3427

3528
// when
36-
List<TreatmentEntity> result = treatmentRepository.findAllByName(treatmentName);
29+
List<TreatmentEntity> result = treatmentRepository.findAllByNameStartingWithIgnoringCase(treatmentName);
3730

3831
// then
3932
assertThat(result).hasSize(1);

0 commit comments

Comments
 (0)