1
1
package com .amigoscode .chohort2 .carRental .registration ;
2
2
3
3
import com .amigoscode .chohort2 .carRental .AbstractTestContainer ;
4
+ import com .amigoscode .chohort2 .carRental .authority .AuthorityConstants ;
5
+ import com .amigoscode .chohort2 .carRental .carProvider .CarProviderRepository ;
6
+ import com .amigoscode .chohort2 .carRental .carProvider .VM .CarProviderVM ;
7
+ import com .amigoscode .chohort2 .carRental .carProviderUser .CarProviderUser ;
8
+ import com .amigoscode .chohort2 .carRental .carProviderUser .CarProviderUserRepository ;
9
+ import com .amigoscode .chohort2 .carRental .driverLicense .DriverLicenseRepository ;
4
10
import com .amigoscode .chohort2 .carRental .driverLicense .VM .DriverLicenseVM ;
11
+ import com .amigoscode .chohort2 .carRental .registration .VM .CarProviderRegistrationVM ;
5
12
import com .amigoscode .chohort2 .carRental .registration .VM .ClientRegistrationVM ;
13
+ import com .amigoscode .chohort2 .carRental .user .User ;
6
14
import com .amigoscode .chohort2 .carRental .user .UserRepository ;
7
15
import org .junit .jupiter .api .Test ;
8
16
import org .springframework .beans .factory .annotation .Autowired ;
11
19
import reactor .core .publisher .Mono ;
12
20
13
21
import java .time .LocalDate ;
22
+ import java .util .Optional ;
23
+
14
24
import static org .assertj .core .api .Assertions .*;
15
25
16
26
class RegistrationControllerIT extends AbstractTestContainer {
@@ -21,17 +31,26 @@ class RegistrationControllerIT extends AbstractTestContainer {
21
31
@ Autowired
22
32
private RegistrationService registrationService ;
23
33
34
+ @ Autowired
35
+ private UserRepository userRepository ;
36
+
37
+ @ Autowired
38
+ private DriverLicenseRepository driverLicenseRepository ;
24
39
40
+ @ Autowired
41
+ private CarProviderRepository carProviderRepository ;
25
42
26
43
@ Autowired
27
- private UserRepository userRepository ;
44
+ private CarProviderUserRepository carProviderUserRepository ;
45
+
46
+
28
47
29
48
30
49
private static final String API_URL = "api/v1/registrations/" ;
31
50
32
51
33
52
@ Test
34
- void givenClientRegistration_whenSave_thenCreateNewUser () {
53
+ void givenClientRegistration_whenSave_thenCreateNewClient () {
35
54
// given precondition or setup
36
55
ClientRegistrationVM clientRegistrationVM = (ClientRegistrationVM ) new ClientRegistrationVM ()
37
56
.setUsername ("esmaeeil" )
@@ -67,5 +86,52 @@ void givenClientRegistration_whenSave_thenCreateNewUser() {
67
86
68
87
69
88
89
+ }
90
+
91
+ @ Test
92
+ void givenCarProviderRegistration_whenSave_thenCreateNewCarProvider () {
93
+ // given precondition or setup
94
+ CarProviderRegistrationVM carProviderRegistrationVM = (CarProviderRegistrationVM ) new CarProviderRegistrationVM ()
95
+ .setUsername ("carProvider" )
96
+ .setFirstName ("esmaeeil" )
97
+ .setLastName ("enani" )
98
+ .setEmail ("carProvider@gmail.com" )
99
+ .setNin ("12345678988" )
100
+ .setPassword ("123456789" );
101
+
102
+ CarProviderVM carProviderVM = new CarProviderVM ()
103
+ .setName ("car provider test" )
104
+ .setCrNumber ("123456789" );
105
+
106
+ carProviderRegistrationVM .setCarProviderVM (carProviderVM );
107
+
108
+ // when - action or the behaviour that we are going test
109
+ webTestClient
110
+ .post ()
111
+ .uri (API_URL + "car-providers" )
112
+ .contentType (MediaType .APPLICATION_JSON )
113
+ .accept (MediaType .APPLICATION_JSON )
114
+ .body (Mono .just (carProviderRegistrationVM ), CarProviderRegistrationVM .class )
115
+ .exchange ()
116
+ .expectStatus ().isCreated ();
117
+
118
+
119
+ // then verify the output
120
+ Optional <User > userOpt = userRepository .findByUsernameWithAuthorities (carProviderRegistrationVM .getUsername ());
121
+ assertThat (userOpt ).isPresent ();
122
+ User user = userOpt .get ();
123
+ assertThat (user .getAuthorities ())
124
+ .anyMatch (a -> a .getName ().equals (AuthorityConstants .CAR_PROVIDER ));
125
+
126
+ assertThat (user .getAuthorities ())
127
+ .noneMatch (a -> a .getName ().equals (AuthorityConstants .CLIENT ))
128
+ .noneMatch (a -> a .getName ().equals (AuthorityConstants .ADMIN ));
129
+
130
+ Optional <CarProviderUser > carProviderUserOpt = carProviderUserRepository .findByUserId (user .getId ());
131
+ assertThat (carProviderUserOpt ).isPresent ();
132
+ CarProviderUser carProviderUser = carProviderUserOpt .get ();
133
+ assertThat (carProviderRepository .findById (carProviderUser .getCarProviderId ())).isPresent ();
134
+
135
+
70
136
}
71
137
}
0 commit comments