Skip to content

Commit

Permalink
Es/enhancement/add tests (#105)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
Esmaeeilenani authored Jul 18, 2023
1 parent b8c7f23 commit 292963c
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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 {
Expand All @@ -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")
Expand Down Expand Up @@ -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("[email protected]")
.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();


}
}

0 comments on commit 292963c

Please sign in to comment.