From 292963c4c8d8065a1761bd87436e07c917999789 Mon Sep 17 00:00:00 2001 From: Esmaeeil enani <esmaeeilenani@gmail.com> Date: Tue, 18 Jul 2023 15:15:03 +0300 Subject: [PATCH] Es/enhancement/add tests (#105) * add abstract to address entity * #80 fix update car * fix and complete registration test * fix Registration IT * fix and complete registration test * fix Registration IT * add more test into registration * add more test into registration * add more test into registration * add more test into registration * add more test into registration --- .../DriverLicenseRepository.java | 4 ++ .../RegistrationControllerIT.java | 70 ++++++++++++++++++- 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/carRental/src/main/java/com/amigoscode/chohort2/carRental/driverLicense/DriverLicenseRepository.java b/carRental/src/main/java/com/amigoscode/chohort2/carRental/driverLicense/DriverLicenseRepository.java index d7876ea..7763286 100644 --- a/carRental/src/main/java/com/amigoscode/chohort2/carRental/driverLicense/DriverLicenseRepository.java +++ b/carRental/src/main/java/com/amigoscode/chohort2/carRental/driverLicense/DriverLicenseRepository.java @@ -3,6 +3,10 @@ import com.amigoscode.chohort2.carRental.abstracts.repository.CRJpaRepository; import org.springframework.stereotype.Repository; +import java.util.Optional; + @Repository public interface DriverLicenseRepository extends CRJpaRepository<DriverLicense,Long> { + + Optional<DriverLicense> findByDriverLicenseNumber(String number); } diff --git a/carRental/src/test/java/com/amigoscode/chohort2/carRental/registration/RegistrationControllerIT.java b/carRental/src/test/java/com/amigoscode/chohort2/carRental/registration/RegistrationControllerIT.java index d05e248..ab623ba 100644 --- a/carRental/src/test/java/com/amigoscode/chohort2/carRental/registration/RegistrationControllerIT.java +++ b/carRental/src/test/java/com/amigoscode/chohort2/carRental/registration/RegistrationControllerIT.java @@ -1,8 +1,16 @@ package com.amigoscode.chohort2.carRental.registration; import com.amigoscode.chohort2.carRental.AbstractTestContainer; +import com.amigoscode.chohort2.carRental.authority.AuthorityConstants; +import com.amigoscode.chohort2.carRental.carProvider.CarProviderRepository; +import com.amigoscode.chohort2.carRental.carProvider.VM.CarProviderVM; +import com.amigoscode.chohort2.carRental.carProviderUser.CarProviderUser; +import com.amigoscode.chohort2.carRental.carProviderUser.CarProviderUserRepository; +import com.amigoscode.chohort2.carRental.driverLicense.DriverLicenseRepository; import com.amigoscode.chohort2.carRental.driverLicense.VM.DriverLicenseVM; +import com.amigoscode.chohort2.carRental.registration.VM.CarProviderRegistrationVM; import com.amigoscode.chohort2.carRental.registration.VM.ClientRegistrationVM; +import com.amigoscode.chohort2.carRental.user.User; import com.amigoscode.chohort2.carRental.user.UserRepository; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -11,6 +19,8 @@ import reactor.core.publisher.Mono; import java.time.LocalDate; +import java.util.Optional; + import static org.assertj.core.api.Assertions.*; class RegistrationControllerIT extends AbstractTestContainer { @@ -21,17 +31,26 @@ class RegistrationControllerIT extends AbstractTestContainer { @Autowired private RegistrationService registrationService; + @Autowired + private UserRepository userRepository; + + @Autowired + private DriverLicenseRepository driverLicenseRepository; + @Autowired + private CarProviderRepository carProviderRepository; @Autowired - private UserRepository userRepository; + private CarProviderUserRepository carProviderUserRepository; + + private static final String API_URL = "api/v1/registrations/"; @Test - void givenClientRegistration_whenSave_thenCreateNewUser() { + void givenClientRegistration_whenSave_thenCreateNewClient() { // given precondition or setup ClientRegistrationVM clientRegistrationVM = (ClientRegistrationVM) new ClientRegistrationVM() .setUsername("esmaeeil") @@ -67,5 +86,52 @@ void givenClientRegistration_whenSave_thenCreateNewUser() { + } + + @Test + void givenCarProviderRegistration_whenSave_thenCreateNewCarProvider() { + // given precondition or setup + CarProviderRegistrationVM carProviderRegistrationVM = (CarProviderRegistrationVM) new CarProviderRegistrationVM() + .setUsername("carProvider") + .setFirstName("esmaeeil") + .setLastName("enani") + .setEmail("carProvider@gmail.com") + .setNin("12345678988") + .setPassword("123456789"); + + CarProviderVM carProviderVM = new CarProviderVM() + .setName("car provider test") + .setCrNumber("123456789"); + + carProviderRegistrationVM.setCarProviderVM(carProviderVM); + + // when - action or the behaviour that we are going test + webTestClient + .post() + .uri(API_URL + "car-providers") + .contentType(MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON) + .body(Mono.just(carProviderRegistrationVM), CarProviderRegistrationVM.class) + .exchange() + .expectStatus().isCreated(); + + + // then verify the output + Optional<User> userOpt = userRepository.findByUsernameWithAuthorities(carProviderRegistrationVM.getUsername()); + assertThat(userOpt).isPresent(); + User user = userOpt.get(); + assertThat(user.getAuthorities()) + .anyMatch(a -> a.getName().equals(AuthorityConstants.CAR_PROVIDER)); + + assertThat(user.getAuthorities()) + .noneMatch(a -> a.getName().equals(AuthorityConstants.CLIENT)) + .noneMatch(a -> a.getName().equals(AuthorityConstants.ADMIN)); + + Optional<CarProviderUser> carProviderUserOpt = carProviderUserRepository.findByUserId(user.getId()); + assertThat(carProviderUserOpt).isPresent(); + CarProviderUser carProviderUser = carProviderUserOpt.get(); + assertThat(carProviderRepository.findById(carProviderUser.getCarProviderId())).isPresent(); + + } } \ No newline at end of file