Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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 {}
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
Original file line number Diff line number Diff line change
@@ -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<T, ID> extends JpaRepositoryImplementation<T, ID> {
public interface BaseJpaRepository<T, ID> extends JpaRepository<T, ID> {

EntityManager getEntityManager();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
@Repository
public interface TreatmentRepository extends BaseJpaRepository<TreatmentEntity, Long> {

List<TreatmentEntity> findAllByName(String name);
List<TreatmentEntity> findAllByNameStartingWithIgnoringCase(String name);

List<TreatmentEntity> findByNameNamedQuery(String name);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@

@Repository
public interface UserRepository extends BaseJpaRepository<UserEntity, Long> {

default List<UserEntity> findByCriteria(UserCriteria criteria) {
Objects.requireNonNull(criteria, "criteria must not be null");

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


}
Original file line number Diff line number Diff line change
@@ -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{
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@

import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.data.repository.config.BootstrapMode;

@DataJpaTest
public class EntitySmokeTestIT {
@DataJpaTest(bootstrapMode = BootstrapMode.LAZY)
public class EntitySmokeIT {

@PersistenceContext
private EntityManager em;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
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.entity.AppointmentEntity;
import com.capgemini.training.appointmentbooking.dataaccess.entity.ClientEntity;
Expand All @@ -9,17 +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.transaction.annotation.Transactional;

import java.time.Instant;
import java.util.List;
import java.util.Optional;


@Transactional
@DataJpaTest
public class AppointmentRepositoryTestIT extends BaseTest {

public class AppointmentRepositoryIT extends BaseDataJpaTest {

@Inject
private AppointmentRepository appointmentRepository;
Expand Down Expand Up @@ -196,5 +193,4 @@ void shouldFindConflictedAppointment() {
// then
assertThat(conflict).isTrue();
}

}
Original file line number Diff line number Diff line change
@@ -1,18 +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.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.transaction.annotation.Transactional;

import java.util.List;


@Transactional
@DataJpaTest
public class ClientRepositoryTestIT extends BaseTest {

public class ClientRepositoryIT extends BaseDataJpaTest {

@Inject
private ClientRepository clientRepository;
Expand All @@ -35,5 +32,4 @@ void shouldFindClientsByName() {
assertThat(client.getUser().getLastname()).isEqualTo(lastName).as("Expected client to have the specified last name");
});
}

}
Original file line number Diff line number Diff line change
@@ -1,19 +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.entity.SpecialistEntity;
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 {
public class SpecialistRepositoryIT extends BaseDataJpaTest {

@Inject
private SpecialistRepository specialistRepository;
Expand Down Expand Up @@ -51,5 +47,4 @@ void shouldFindSpecialistsByName() {
assertThat(specialist.getUser().getLastname()).isEqualTo(lastName).as("Expected specialist to have the specified last name");
});
}

}
Original file line number Diff line number Diff line change
@@ -1,22 +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.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.transaction.annotation.Transactional;

import java.util.List;
import java.util.Optional;


@Transactional
@DataJpaTest
public class TreatmentRepositoryTestIT extends BaseTest {
public class TreatmentRepositoryIT extends BaseDataJpaTest {

@Inject
private TreatmentRepository treatmentRepository;
Expand All @@ -27,10 +23,10 @@ public class TreatmentRepositoryTestIT extends BaseTest {
@Test
void shouldFindTreatmentsByName() {
// given
String treatmentName = "Konsultacja dentystyczna";
String treatmentName = "konsUltacja de";

// when
List<TreatmentEntity> result = treatmentRepository.findAllByName(treatmentName);
List<TreatmentEntity> result = treatmentRepository.findAllByNameStartingWithIgnoringCase(treatmentName);

// then
assertThat(result).hasSize(1);
Expand Down Expand Up @@ -168,5 +164,4 @@ void shouldSaveTreatment() {
assertThat(savedSpecialist.getTreatments()).isNotNull();
});
}

}
Original file line number Diff line number Diff line change
@@ -1,19 +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.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.transaction.annotation.Transactional;

import java.util.List;


@Transactional
@DataJpaTest
public class UserRepositoryTestIT extends BaseTest {
public class UserRepositoryIT extends BaseDataJpaTest {

@Inject
private UserRepository userRepository;
Expand Down Expand Up @@ -43,5 +39,4 @@ void shouldFindUsersByCriteria() {
assertThat(user.getLastname()).isEqualTo(lastName).as("Expected user to have the specified last name");
});
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ void shouldThrowConstraintViolationExceptionDuringAppointmentBooking() {
@Test
void shouldThrowAnExceptionDuringAppointmentBooking() {
// given
Long specialistId = -3L;
Instant dateTime = toInstant("2024-03-03 14:00:00");
Long specialistId = -4L;
Instant dateTime = toInstant("2024-03-04 08:15:00");

AppointmentBookingEto appointmentBookingEto = AppointmentBookingEto
.builder()
Expand Down
Loading