Skip to content

Commit 2b6d4cc

Browse files
Ashish MishraAshish Mishra
authored andcommitted
starting unit test
1 parent 6d8ca24 commit 2b6d4cc

7 files changed

Lines changed: 72 additions & 17 deletions

File tree

pom.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
<org.mapstruct.version>1.6.0.Beta1</org.mapstruct.version>
3232
<org.projectlombok.version>1.18.30</org.projectlombok.version>
3333
<lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version>
34+
<junit-version>5.13.3</junit-version>
3435
</properties>
3536
<dependencies>
3637
<dependency>
@@ -95,6 +96,13 @@
9596
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
9697
<version>2.6.0</version>
9798
</dependency>
99+
<!-- &lt;!&ndash; https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine &ndash;&gt;-->
100+
<!-- <dependency>-->
101+
<!-- <groupId>org.junit.jupiter</groupId>-->
102+
<!-- <artifactId>junit-jupiter-engine</artifactId>-->
103+
<!-- <version>${junit-version}</version>-->
104+
<!-- <scope>test</scope>-->
105+
<!-- </dependency>-->
98106
<dependency>
99107
<groupId>org.springframework.boot</groupId>
100108
<artifactId>spring-boot-starter-thymeleaf</artifactId>

src/main/java/com/beneite/SpringWithDocker/controller/UserController.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.beneite.SpringWithDocker.dto.requestDto.UserDto;
44
import com.beneite.SpringWithDocker.dto.requestDto.UserIdRequestDto;
5+
import com.beneite.SpringWithDocker.dto.responseDto.CreateUserResponseDto;
56
import com.beneite.SpringWithDocker.dto.responseDto.UserIdResponseDto;
67
import com.beneite.SpringWithDocker.service.implementation.UserServiceImpl;
78
import io.swagger.v3.oas.annotations.Operation;
@@ -43,9 +44,10 @@ public class UserController {
4344
description = "201-created, display the student record created"
4445
)
4546
@PostMapping("create")
46-
public ResponseEntity<UserDto> createUserApi(@Valid @RequestBody UserDto userEntity){
47-
UserDto savedUser = userServiceImpl.createUserImplementation(userEntity);
48-
return new ResponseEntity<>(savedUser, HttpStatus.CREATED);
47+
public ResponseEntity<CreateUserResponseDto> createUserApi(@Valid @RequestBody UserDto userEntity){
48+
UserDto savedUserDto = userServiceImpl.createUserImplementation(userEntity);
49+
CreateUserResponseDto createUserResponseDto = new CreateUserResponseDto(savedUserDto, "Record created successfully");
50+
return new ResponseEntity<>(createUserResponseDto, HttpStatus.CREATED);
4951
}
5052

5153
@Operation(

src/main/java/com/beneite/SpringWithDocker/dto/requestDto/UserDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import jakarta.validation.constraints.Email;
55
import jakarta.validation.constraints.NotEmpty;
66
import lombok.AllArgsConstructor;
7+
import lombok.Builder;
78
import lombok.Getter;
89
import lombok.NoArgsConstructor;
910
import lombok.Setter;
@@ -15,6 +16,7 @@
1516
@Setter
1617
@NoArgsConstructor
1718
@AllArgsConstructor
19+
@Builder
1820
public class UserDto {
1921
private Long id;
2022

src/main/java/com/beneite/SpringWithDocker/dto/requestDto/UserIdRequestDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import jakarta.validation.constraints.NotEmpty;
66
import jakarta.validation.constraints.NotNull;
77
import lombok.AllArgsConstructor;
8+
import lombok.Builder;
89
import lombok.Getter;
910
import lombok.NoArgsConstructor;
1011
import lombok.Setter;
@@ -16,6 +17,7 @@
1617
@Setter
1718
@NoArgsConstructor
1819
@AllArgsConstructor
20+
@Builder
1921
public class UserIdRequestDto {
2022

2123
@NotNull(message = "User ID cannot be null")
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.beneite.SpringWithDocker.dto.responseDto;
2+
3+
import com.beneite.SpringWithDocker.dto.requestDto.UserDto;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
import lombok.Setter;
10+
11+
@Schema(
12+
description = "Create User Response Dto model information"
13+
)
14+
@Getter
15+
@Setter
16+
@NoArgsConstructor
17+
@AllArgsConstructor
18+
@Builder
19+
public class CreateUserResponseDto {
20+
21+
private Long id;
22+
private String firstName;
23+
private String lastName;
24+
private String email;
25+
private String message;
26+
27+
public CreateUserResponseDto(UserDto user, String message) {
28+
this.id = user.getId();
29+
this.firstName = user.getFirstName();
30+
this.lastName = user.getLastName();
31+
this.email = user.getEmail();
32+
this.message = message;
33+
}
34+
}

src/main/java/com/beneite/SpringWithDocker/dto/responseDto/UserIdResponseDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.swagger.v3.oas.annotations.media.Schema;
44
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
56
import lombok.Getter;
67
import lombok.NoArgsConstructor;
78
import lombok.Setter;
@@ -13,6 +14,7 @@
1314
@Setter
1415
@NoArgsConstructor
1516
@AllArgsConstructor
17+
@Builder
1618
public class UserIdResponseDto {
1719

1820
@Schema(

src/test/java/com/beneite/SpringWithDocker/controllerTest/UserControllerTest.java

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
import com.beneite.SpringWithDocker.controller.UserController;
44
import com.beneite.SpringWithDocker.dto.requestDto.UserDto;
5+
import com.beneite.SpringWithDocker.dto.responseDto.CreateUserResponseDto;
56
import com.beneite.SpringWithDocker.service.implementation.UserServiceImpl;
67
import org.junit.jupiter.api.Test;
7-
import org.junit.jupiter.api.extension.ExtendWith;
8-
import org.mockito.InjectMocks;
9-
import org.mockito.junit.jupiter.MockitoExtension;
8+
import org.springframework.beans.factory.annotation.Autowired;
109
import org.springframework.boot.test.context.SpringBootTest;
1110
import org.springframework.boot.test.mock.mockito.MockBean;
1211
import org.springframework.http.HttpStatus;
@@ -21,34 +20,40 @@
2120
import static org.mockito.Mockito.when;
2221

2322
@SpringBootTest
24-
@ExtendWith(MockitoExtension.class) // Ensures Mockito works
2523
class UserControllerTest {
2624

27-
@InjectMocks
28-
private UserController userController; // Ensures mock dependencies are injected
29-
3025
@MockBean
3126
private UserServiceImpl userServiceImpl; // Tells Spring to mock and inject this bean
3227

28+
@Autowired
29+
private UserController userController; // Ensures mock dependencies are injected
30+
3331
@Test
3432
public void testCreateUserApi(){
3533
// Given: Mock Service Layer
3634
when(userServiceImpl.createUserImplementation(any(UserDto.class)))
37-
.thenReturn(buildCreateUserDto());
35+
.thenReturn(UserDto.builder()
36+
.id(1L)
37+
.firstName("Ashish")
38+
.lastName("Mishra")
39+
.email("Ashish.Mishra@gmail.com")
40+
.build());
3841

3942
// Act: Call the controller method
40-
ResponseEntity<UserDto> createUserResponse = userController.createUserApi(buildCreateUserDto());
43+
ResponseEntity<CreateUserResponseDto> createUserResponse = userController.createUserApi(buildCreateUserDto());
4144

4245
// Assert: Validate the response
4346
assertNotNull(createUserResponse, "Response should not be null");
4447
assertEquals(HttpStatus.CREATED, createUserResponse.getStatusCode());
4548

46-
// asserting the response body data
47-
assertEquals(createUserResponse.getBody().getId(), buildCreateUserDto().getId());
48-
assertEquals(createUserResponse.getBody().getEmail(), buildCreateUserDto().getEmail());
49-
assertEquals(createUserResponse.getBody().getFirstName(), buildCreateUserDto().getFirstName());
50-
assertEquals(createUserResponse.getBody().getLastName(), buildCreateUserDto().getLastName());
49+
CreateUserResponseDto createUserResponseDto = createUserResponse.getBody();
5150

51+
// asserting the response body data
52+
assertEquals(1L, createUserResponseDto.getId());
53+
assertEquals("Ashish.Mishra@gmail.com", createUserResponseDto.getEmail());
54+
assertEquals("Ashish", createUserResponseDto.getFirstName());
55+
assertEquals("Mishra", createUserResponseDto.getLastName());
56+
assertEquals("Record created successfully", createUserResponseDto.getMessage());
5257
}
5358

5459
@Test

0 commit comments

Comments
 (0)