Skip to content

Commit 1af9a60

Browse files
author
Piotr Kubicki
committed
fix: code review remarks incorporated
1 parent d354eee commit 1af9a60

File tree

11 files changed

+54
-58
lines changed

11 files changed

+54
-58
lines changed

src/main/resources/application.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ spring.flyway.clean-on-validation-error=true
1616

1717
spring.jpa.hibernate.ddl-auto=none
1818

19-
spring.banner.location=classpath:/banner/jbf_banner.txt
19+
spring.banner.location=classpath:/banner/jbd_banner.txt
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
____. __________ __ .___ ________ .__
2+
| |____ ___ _______ \______ \_____ ____ | | __ ____ ____ __| _/ \______ \ _______ __ ____ | | ____ ______ ___________
3+
| \__ \\ \/ /\__ \ | | _/\__ \ _/ ___\| |/ // __ \ / \ / __ | | | \_/ __ \ \/ // __ \| | / _ \\____ \_/ __ \_ __ \
4+
/\__| |/ __ \\ / / __ \_ | | \ / __ \\ \___| <\ ___/| | \/ /_/ | | ` \ ___/\ /\ ___/| |_( <_> ) |_> > ___/| | \/
5+
\________(____ /\_/ (____ / |______ /(____ /\___ >__|_ \\___ >___| /\____ | /_______ /\___ >\_/ \___ >____/\____/| __/ \___ >__|
6+
\/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ |__| \/
7+
8+
${application.title} ${application.version}
9+
Powered by Spring Boot ${spring-boot.version}

src/main/resources/banner/jbf_banner.txt

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/test/java/com/capgemini/training/appointmentbooking/common/BaseDataJpaTest.java renamed to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/common/BaseDataJpaTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.capgemini.training.appointmentbooking.common;
1+
package com.capgemini.training.appointmentbooking.dataaccess.common;
22

33
import com.capgemini.training.appointmentbooking.dataaccess.config.DataaccessConfiguration;
44
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;

src/test/java/com/capgemini/training/appointmentbooking/common/BaseTest.java renamed to src/test/java/com/capgemini/training/appointmentbooking/dataaccess/common/BaseTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.capgemini.training.appointmentbooking.common;
1+
package com.capgemini.training.appointmentbooking.dataaccess.common;
22

33
import org.assertj.core.api.WithAssertions;
44

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// Use LAZY bootstrap mode to avoid initializing all Spring Data JPA repositories during test startup.
1616
// This improves performance and reduces test context size, since we only use EntityManager in this test.
1717
@DataJpaTest(bootstrapMode = BootstrapMode.LAZY)
18-
public class EntitySmokeIT {
18+
class EntitySmokeIT {
1919

2020
@PersistenceContext
2121
private EntityManager em;

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

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

3-
import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest;
3+
import com.capgemini.training.appointmentbooking.dataaccess.common.BaseDataJpaTest;
44
import com.capgemini.training.appointmentbooking.common.datatype.AppointmentStatus;
55
import com.capgemini.training.appointmentbooking.dataaccess.entity.AppointmentEntity;
66
import com.capgemini.training.appointmentbooking.dataaccess.entity.ClientEntity;
@@ -14,7 +14,7 @@
1414
import java.util.List;
1515
import java.util.Optional;
1616

17-
public class AppointmentRepositoryIT extends BaseDataJpaTest {
17+
class AppointmentRepositoryIT extends BaseDataJpaTest {
1818

1919
@Inject
2020
private AppointmentRepository appointmentRepository;
@@ -161,79 +161,74 @@ void shouldFindAppointmentsBySpecialistIdBeforeDate() {
161161
.allMatch(a -> a.getDateTime().isBefore(date), "All appointments should be before the given date");
162162
}
163163

164+
/**
165+
* Given a saved appointment from 11:45 to 12:00,
166+
* this test ensures that an earlier appointment does not trigger a conflict.
167+
*/
164168
@Test
165-
void shouldNotFindConflictedAppointmentBefore() {
166-
// given
169+
void shouldNotFindConflictingAppointmentWhenNewAppointmentEndsBeforeExisting() {
167170
Long specialistId = -1L;
168-
Instant date = toInstant("2024-03-05 11:30:00");
171+
Instant startDate = toInstant("2024-03-05 11:30:00");
169172
Instant endDate = toInstant("2024-03-05 11:45:00");
170173

171-
// when
172-
boolean conflict = appointmentRepository.hasConflictingAppointmentBySpecialistIdAndDateTime(specialistId, date,
173-
endDate);
174+
boolean conflict = appointmentRepository.hasConflictingAppointmentBySpecialistIdAndDateTime(specialistId, startDate, endDate);
174175

175-
// then
176176
assertThat(conflict).isFalse();
177177
}
178178

179+
/**
180+
* Ensures that an appointment starting after an existing one does not conflict.
181+
*/
179182
@Test
180-
void shouldNotFindConflictedAppointmentAfter() {
181-
// given
183+
void shouldNotFindConflictingAppointmentWhenNewAppointmentStartsAfterExisting() {
182184
Long specialistId = -1L;
183-
Instant date = toInstant("2024-03-05 12:00:00");
185+
Instant startDate = toInstant("2024-03-05 12:00:00");
184186
Instant endDate = toInstant("2024-03-05 12:01:00");
185187

186-
// when
187-
boolean conflict = appointmentRepository.hasConflictingAppointmentBySpecialistIdAndDateTime(specialistId, date,
188-
endDate);
188+
boolean conflict = appointmentRepository.hasConflictingAppointmentBySpecialistIdAndDateTime(specialistId, startDate, endDate);
189189

190-
// then
191190
assertThat(conflict).isFalse();
192191
}
193192

193+
/**
194+
* Verifies that an appointment starting and ending at exactly the same time as an existing one is treated as a conflict.
195+
*/
194196
@Test
195-
void shouldFindConflictedAppointmentExact() {
196-
// given
197+
void shouldFindConflictingAppointmentWhenTimeMatchesExactly() {
197198
Long specialistId = -1L;
198-
Instant date = toInstant("2024-03-05 11:45:00");
199+
Instant startDate = toInstant("2024-03-05 11:45:00");
199200
Instant endDate = toInstant("2024-03-05 12:00:00");
200201

201-
// when
202-
boolean conflict = appointmentRepository.hasConflictingAppointmentBySpecialistIdAndDateTime(specialistId, date,
203-
endDate);
202+
boolean conflict = appointmentRepository.hasConflictingAppointmentBySpecialistIdAndDateTime(specialistId, startDate, endDate);
204203

205-
// then
206204
assertThat(conflict).isTrue();
207205
}
208206

207+
/**
208+
* Ensures that an appointment which starts before and ends during the existing one is considered a conflict.
209+
*/
209210
@Test
210-
void shouldFindConflictedAppointmentBegin() {
211-
// given
211+
void shouldFindConflictingAppointmentWhenEndingOverlapsWithExisting() {
212212
Long specialistId = -1L;
213-
Instant date = toInstant("2024-03-05 11:40:00");
213+
Instant startDate = toInstant("2024-03-05 11:40:00");
214214
Instant endDate = toInstant("2024-03-05 11:45:01");
215215

216-
// when
217-
boolean conflict = appointmentRepository.hasConflictingAppointmentBySpecialistIdAndDateTime(specialistId, date,
218-
endDate);
216+
boolean conflict = appointmentRepository.hasConflictingAppointmentBySpecialistIdAndDateTime(specialistId, startDate, endDate);
219217

220-
// then
221218
assertThat(conflict).isTrue();
222219
}
223220

221+
/**
222+
* Checks that an appointment starting just before the end of an existing one is correctly flagged as a conflict.
223+
*/
224224
@Test
225-
void shouldFindConflictedAppointmentEnd() {
226-
// given
225+
void shouldFindConflictingAppointmentWhenStartingBeforeExistingEnds() {
227226
Long specialistId = -1L;
228-
Instant date = toInstant("2024-03-05 11:59:59");
227+
Instant startDate = toInstant("2024-03-05 11:59:59");
229228
Instant endDate = toInstant("2024-03-05 12:05:00");
230229

231-
// when
232-
boolean conflict = appointmentRepository.hasConflictingAppointmentBySpecialistIdAndDateTime(specialistId, date,
233-
endDate);
230+
boolean conflict = appointmentRepository.hasConflictingAppointmentBySpecialistIdAndDateTime(specialistId, startDate, endDate);
234231

235-
// then
236232
assertThat(conflict).isTrue();
237233
}
238-
239234
}

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

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

3-
import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest;
3+
import com.capgemini.training.appointmentbooking.dataaccess.common.BaseDataJpaTest;
44
import com.capgemini.training.appointmentbooking.dataaccess.entity.ClientEntity;
55
import jakarta.inject.Inject;
66
import org.junit.jupiter.api.Test;
77

88
import java.util.List;
99

10-
public class ClientRepositoryIT extends BaseDataJpaTest {
10+
class ClientRepositoryIT extends BaseDataJpaTest {
1111

1212
@Inject
1313
private ClientRepository clientRepository;

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

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

3-
import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest;
3+
import com.capgemini.training.appointmentbooking.dataaccess.common.BaseDataJpaTest;
44
import com.capgemini.training.appointmentbooking.common.datatype.Specialization;
55
import com.capgemini.training.appointmentbooking.dataaccess.entity.SpecialistEntity;
66
import jakarta.inject.Inject;
77
import org.junit.jupiter.api.Test;
88

99
import java.util.List;
1010

11-
public class SpecialistRepositoryIT extends BaseDataJpaTest {
11+
class SpecialistRepositoryIT extends BaseDataJpaTest {
1212

1313
@Inject
1414
private SpecialistRepository specialistRepository;

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

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

3-
import com.capgemini.training.appointmentbooking.common.BaseDataJpaTest;
3+
import com.capgemini.training.appointmentbooking.dataaccess.common.BaseDataJpaTest;
44
import com.capgemini.training.appointmentbooking.common.datatype.Specialization;
55
import com.capgemini.training.appointmentbooking.dataaccess.entity.SpecialistEntity;
66
import com.capgemini.training.appointmentbooking.dataaccess.entity.TreatmentEntity;
@@ -11,7 +11,7 @@
1111
import java.util.List;
1212
import java.util.Optional;
1313

14-
public class TreatmentRepositoryIT extends BaseDataJpaTest {
14+
class TreatmentRepositoryIT extends BaseDataJpaTest {
1515

1616
@Inject
1717
private TreatmentRepository treatmentRepository;

0 commit comments

Comments
 (0)