Skip to content

Commit

Permalink
test/#353: DTO Validation test를 Controller test로 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
LJH098 committed Jul 6, 2024
1 parent 43da406 commit 3deef0b
Show file tree
Hide file tree
Showing 4 changed files with 337 additions and 294 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import com.gaebaljip.exceed.common.IntegrationTest;
import com.gaebaljip.exceed.common.ValidationMessage;
import com.gaebaljip.exceed.dto.request.LoginRequest;

class AuthControllerIntegrationTest extends IntegrationTest {
Expand All @@ -29,34 +28,4 @@ void login() throws Exception {
resultActions.andExpect(header().exists("Authorization"));
resultActions.andExpect(cookie().exists("refreshToken"));
}

@Test()
@DisplayName("로그인 실패 - 비밀번호 형식 안 맞을 때")
void login_fail() throws Exception {
LoginRequest loginRequest = new LoginRequest("abcd1111!@gmail.com", "abcd");

ResultActions resultActions =
mockMvc.perform(
MockMvcRequestBuilders.post("/v1/auth/login")
.content(om.writeValueAsString(loginRequest))
.contentType(MediaType.APPLICATION_JSON));

resultActions.andExpect(status().isBadRequest());
}

@Test()
@DisplayName("로그인 실패 - 이메일 형식 안 맞을 때")
void login_fail2() throws Exception {
LoginRequest loginRequest = new LoginRequest("abcd1111gmail.com", "Abc@123");

ResultActions resultActions =
mockMvc.perform(
MockMvcRequestBuilders.post("/v1/auth/login")
.content(om.writeValueAsString(loginRequest))
.contentType(MediaType.APPLICATION_JSON));

resultActions.andExpectAll(
status().isBadRequest(),
jsonPath("$.error.reason").value(ValidationMessage.INVALID_EMAIL));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.gaebaljip.exceed.auth.adapter.in;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import com.gaebaljip.exceed.auth.adapter.AuthController;
import com.gaebaljip.exceed.auth.application.port.AuthService;
import com.gaebaljip.exceed.common.ControllerTest;
import com.gaebaljip.exceed.common.ValidationMessage;
import com.gaebaljip.exceed.dto.request.LoginRequest;

@WebMvcTest(AuthController.class)
public class AuthControllerTest extends ControllerTest {
@MockBean private AuthService authService;

@Test()
@DisplayName("로그인 실패 - 비밀번호 형식 안 맞을 때")
void login_fail() throws Exception {
LoginRequest loginRequest = new LoginRequest("abcd1111!@gmail.com", "abcd");

ResultActions resultActions =
mockMvc.perform(
MockMvcRequestBuilders.post("/v1/auth/login")
.content(om.writeValueAsString(loginRequest))
.contentType(MediaType.APPLICATION_JSON));

resultActions.andExpect(status().isBadRequest());
}

@Test()
@DisplayName("로그인 실패 - 이메일 형식 안 맞을 때")
void login_fail2() throws Exception {
LoginRequest loginRequest = new LoginRequest("abcd1111gmail.com", "Abc@123");

ResultActions resultActions =
mockMvc.perform(
MockMvcRequestBuilders.post("/v1/auth/login")
.content(om.writeValueAsString(loginRequest))
.contentType(MediaType.APPLICATION_JSON));

resultActions.andExpectAll(
status().isBadRequest(),
jsonPath("$.error.reason").value(ValidationMessage.INVALID_EMAIL));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.gaebaljip.exceed.food;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.jupiter.api.DisplayName;
Expand All @@ -10,7 +9,6 @@
import org.springframework.test.web.servlet.ResultActions;

import com.gaebaljip.exceed.common.IntegrationTest;
import com.gaebaljip.exceed.common.ValidationMessage;
import com.gaebaljip.exceed.common.WithMockUser;
import com.gaebaljip.exceed.dto.request.CreateFoodRequest;

Expand Down Expand Up @@ -45,265 +43,4 @@ void createFood() throws Exception {
// then
resultActions.andExpect(status().isOk());
}

@Test
@DisplayName("음식 추가 : 실패 - 이름이 없는 경우")
@WithMockUser
void createFoodFail() throws Exception {
// given
CreateFoodRequest request =
CreateFoodRequest.builder()
.calorie(1000.0)
.carbohydrate(100.0)
.dietaryFiber(10.0)
.fat(10.0)
.protein(10.0)
.servingSize(1.0)
.sodium(10.0)
.sugars(10.0)
.build();
// when
ResultActions resultActions =
mockMvc.perform(
RestDocumentationRequestBuilders.post("/v1/food")
.content(om.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON));

// then
resultActions.andExpectAll(
status().isBadRequest(),
jsonPath("$.error.reason").value("이름을 " + ValidationMessage.NOT_BLANK));
}

@Test
@DisplayName("음식 추가 : 실패 - 칼로리가 없는 경우")
@WithMockUser
void createFoodFail2() throws Exception {
// given
CreateFoodRequest request =
CreateFoodRequest.builder()
.name("민초마라탕")
.carbohydrate(100.0)
.dietaryFiber(10.0)
.fat(10.0)
.protein(10.0)
.servingSize(1.0)
.sodium(10.0)
.sugars(10.0)
.build();
// when
ResultActions resultActions =
mockMvc.perform(
RestDocumentationRequestBuilders.post("/v1/food")
.content(om.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON));

// then
resultActions.andExpectAll(
status().isBadRequest(),
jsonPath("$.error.reason").value("칼로리를 " + ValidationMessage.NOT_NULL));
}

@Test
@DisplayName("음식 추가 : 실패 - 탄수화물이 없는 경우")
@WithMockUser
void createFoodFail3() throws Exception {
// given
CreateFoodRequest request =
CreateFoodRequest.builder()
.name("민초마라탕")
.calorie(1000.0)
.dietaryFiber(10.0)
.fat(10.0)
.protein(10.0)
.servingSize(1.0)
.sodium(10.0)
.sugars(10.0)
.build();
// when
ResultActions resultActions =
mockMvc.perform(
RestDocumentationRequestBuilders.post("/v1/food")
.content(om.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON));

// then
resultActions.andExpectAll(
status().isBadRequest(),
jsonPath("$.error.reason").value("탄수화물을 " + ValidationMessage.NOT_NULL));
}

@Test
@DisplayName("음식 추가 : 실패 - 식이섬유가 없는 경우")
@WithMockUser
void createFoodFail4() throws Exception {
// given
CreateFoodRequest request =
CreateFoodRequest.builder()
.name("민초마라탕")
.calorie(1000.0)
.carbohydrate(100.0)
.fat(10.0)
.protein(10.0)
.servingSize(1.0)
.sodium(10.0)
.sugars(10.0)
.build();
// when
ResultActions resultActions =
mockMvc.perform(
RestDocumentationRequestBuilders.post("/v1/food")
.content(om.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON));

// then
resultActions.andExpectAll(
status().isBadRequest(),
jsonPath("$.error.reason").value("식이섬유를 " + ValidationMessage.NOT_NULL));
}

@Test
@DisplayName("음식 추가 : 실패 - 지방이 없는 경우")
@WithMockUser
void createFoodFail5() throws Exception {
// given
CreateFoodRequest request =
CreateFoodRequest.builder()
.name("민초마라탕")
.calorie(1000.0)
.carbohydrate(100.0)
.dietaryFiber(10.0)
.protein(10.0)
.servingSize(1.0)
.sodium(10.0)
.sugars(10.0)
.build();
// when
ResultActions resultActions =
mockMvc.perform(
RestDocumentationRequestBuilders.post("/v1/food")
.content(om.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON));

// then
resultActions.andExpectAll(
status().isBadRequest(),
jsonPath("$.error.reason").value("지방을 " + ValidationMessage.NOT_NULL));
}

@Test
@DisplayName("음식 추가 : 실패 - 단백질이 없는 경우")
@WithMockUser
void createFoodFail6() throws Exception {
// given
CreateFoodRequest request =
CreateFoodRequest.builder()
.name("민초마라탕")
.calorie(1000.0)
.carbohydrate(100.0)
.dietaryFiber(10.0)
.fat(10.0)
.servingSize(1.0)
.sodium(10.0)
.sugars(10.0)
.build();
// when
ResultActions resultActions =
mockMvc.perform(
RestDocumentationRequestBuilders.post("/v1/food")
.content(om.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON));

// then
resultActions.andExpectAll(
status().isBadRequest(),
jsonPath("$.error.reason").value("단백질을 " + ValidationMessage.NOT_NULL));
}

@Test
@DisplayName("음식 추가 : 실패 - 1회 제공량이 없는 경우")
@WithMockUser
void createFoodFail7() throws Exception {
// given
CreateFoodRequest request =
CreateFoodRequest.builder()
.name("민초마라탕")
.calorie(1000.0)
.carbohydrate(100.0)
.dietaryFiber(10.0)
.fat(10.0)
.protein(10.0)
.sodium(10.0)
.sugars(10.0)
.build();
// when
ResultActions resultActions =
mockMvc.perform(
RestDocumentationRequestBuilders.post("/v1/food")
.content(om.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON));

// then
resultActions.andExpectAll(
status().isBadRequest(),
jsonPath("$.error.reason").value("1회 제공량을 " + ValidationMessage.NOT_NULL));
}

@Test
@DisplayName("음식 추가 : 실패 - 당이 없는 경우")
@WithMockUser
void createFoodFail8() throws Exception {
// given
CreateFoodRequest request =
CreateFoodRequest.builder()
.name("민초마라탕")
.calorie(1000.0)
.carbohydrate(100.0)
.dietaryFiber(10.0)
.fat(10.0)
.protein(10.0)
.servingSize(1.0)
.sodium(10.0)
.build();
// when
ResultActions resultActions =
mockMvc.perform(
RestDocumentationRequestBuilders.post("/v1/food")
.content(om.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON));

// then
resultActions.andExpectAll(
status().isBadRequest(),
jsonPath("$.error.reason").value("당을 " + ValidationMessage.NOT_NULL));
}

@Test
@DisplayName("음식 추가 : 실패 - 나트륨이 없는 경우")
@WithMockUser
void createFoodFail9() throws Exception {
// given
CreateFoodRequest request =
CreateFoodRequest.builder()
.name("민초마라탕")
.calorie(1000.0)
.carbohydrate(100.0)
.dietaryFiber(10.0)
.fat(10.0)
.protein(10.0)
.servingSize(1.0)
.sugars(10.0)
.build();
// when
ResultActions resultActions =
mockMvc.perform(
RestDocumentationRequestBuilders.post("/v1/food")
.content(om.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON));

// then
resultActions.andExpectAll(
status().isBadRequest(),
jsonPath("$.error.reason").value("나트륨을 " + ValidationMessage.NOT_NULL));
}
}
Loading

0 comments on commit 3deef0b

Please sign in to comment.