Skip to content

Commit

Permalink
test/#359: UpdateWeightController 테스트
Browse files Browse the repository at this point in the history
  • Loading branch information
LJH098 committed Jul 12, 2024
1 parent 44fc422 commit 385db5f
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

Expand All @@ -16,8 +17,8 @@
import com.gaebaljip.exceed.common.event.UpdateWeightEvent;
import com.gaebaljip.exceed.dto.request.UpdateWeightRequest;
import com.gaebaljip.exceed.dto.response.UpdateWeightResponse;
import com.gaebaljip.exceed.member.application.UpdateWeightService;
import com.gaebaljip.exceed.member.application.port.in.UpdateWeightCommand;
import com.gaebaljip.exceed.member.application.port.in.UpdateWeightUsecase;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
Expand All @@ -30,16 +31,16 @@
@SecurityRequirement(name = "access-token")
@Tag(name = "[몸무게 수정]")
public class UpdateWeightController {
private final UpdateWeightService updateWeightService;
private final UpdateWeightUsecase updateWeightUsecase;

@Operation(summary = "회원 몸무게 및 목표 몸무게 수정", description = "회원 몸무게 및 목표 몸무게를 수정한다.")
@PatchMapping("/members/weight")
public ApiResponse<UpdateWeightResponse> updateWeight(
HttpServletRequest servletRequest,
UpdateWeightRequest request,
@RequestBody UpdateWeightRequest request,
@AuthenticationMemberId Long memberId) {
UpdateWeightResponse response =
updateWeightService.execute(
updateWeightUsecase.execute(
UpdateWeightCommand.of(request.weight(), request.targetWeight(), memberId));
Events.raise(
UpdateWeightEvent.from(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package com.gaebaljip.exceed.member.adapter.in;

import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.http.MediaType;
import org.springframework.test.context.event.ApplicationEvents;
import org.springframework.test.context.event.RecordApplicationEvents;
import org.springframework.test.web.servlet.ResultActions;

import com.gaebaljip.exceed.common.ControllerTest;
import com.gaebaljip.exceed.common.WithMockUser;
import com.gaebaljip.exceed.common.event.Events;
import com.gaebaljip.exceed.common.event.UpdateWeightEvent;
import com.gaebaljip.exceed.dto.request.UpdateWeightRequest;
import com.gaebaljip.exceed.member.application.port.in.UpdateWeightUsecase;

@RecordApplicationEvents
@WebMvcTest(UpdateWeightController.class)
public class UpdateWeightControllerTest extends ControllerTest {

@MockBean UpdateWeightUsecase updateWeightUsecase;
@Autowired ApplicationEvents events;
@Autowired ApplicationEventPublisher applicationEventPublisher;

@BeforeEach
void setUp() {
Events.setPublisher(applicationEventPublisher);
}

@AfterEach
void tearDown() {
Events.reset();
}

@Test
@WithMockUser(memberId = 1L)
@DisplayName("몸무게 수정 성공")
void when_updateWeight_expected_success() throws Exception {
// given
UpdateWeightRequest updateWeightRequest =
UpdateWeightRequest.builder().weight(50.0).targetWeight(70.5).build();

// when
ResultActions resultActions =
mockMvc.perform(
patch("/v1/members/weight")
.content(om.writeValueAsString(updateWeightRequest))
.contentType(MediaType.APPLICATION_JSON));

long count = events.stream(UpdateWeightEvent.class).count();

// then
resultActions.andExpectAll(status().isOk());
assertAll(() -> assertEquals(1, count));
}
}

0 comments on commit 385db5f

Please sign in to comment.