diff --git a/backend/src/main/java/com/mapbefine/mapbefine/admin/application/AdminCommandService.java b/backend/src/main/java/com/mapbefine/mapbefine/admin/application/AdminCommandService.java index 989a79f0..05119b27 100644 --- a/backend/src/main/java/com/mapbefine/mapbefine/admin/application/AdminCommandService.java +++ b/backend/src/main/java/com/mapbefine/mapbefine/admin/application/AdminCommandService.java @@ -117,6 +117,7 @@ public void deletePin(Long pinId) { .orElseThrow(() -> new PinNotFoundException(PIN_NOT_FOUND, pinId)); pin.decreaseTopicPinCount(); + pinRepository.flush(); pinImageRepository.deleteAllByPinId(pinId); pinRepository.deleteById(pin.getId()); } diff --git a/backend/src/test/java/com/mapbefine/mapbefine/admin/AdminIntegrationTest.java b/backend/src/test/java/com/mapbefine/mapbefine/admin/AdminIntegrationTest.java index 109c9380..54eb8662 100644 --- a/backend/src/test/java/com/mapbefine/mapbefine/admin/AdminIntegrationTest.java +++ b/backend/src/test/java/com/mapbefine/mapbefine/admin/AdminIntegrationTest.java @@ -1,6 +1,6 @@ package com.mapbefine.mapbefine.admin; -import static io.restassured.RestAssured.given; +import static io.restassured.RestAssured.*; import static org.assertj.core.api.Assertions.assertThat; import static org.springframework.http.HttpHeaders.AUTHORIZATION; @@ -23,7 +23,8 @@ import com.mapbefine.mapbefine.topic.TopicFixture; import com.mapbefine.mapbefine.topic.domain.Topic; import com.mapbefine.mapbefine.topic.domain.TopicRepository; -import io.restassured.common.mapper.TypeRef; +import io.restassured.common.mapper.*; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -32,8 +33,6 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; -import java.util.List; - class AdminIntegrationTest extends IntegrationTest { @Autowired @@ -124,15 +123,13 @@ void findMemberDetail_Success() { .extract() .as(new TypeRef<>() { }); - System.out.println("====" + topic.getPinCount()); - //then + //then AdminMemberDetailResponse expected = AdminMemberDetailResponse.of( member, member.getCreatedTopics(), member.getCreatedPins() ); - assertThat(response).usingRecursiveComparison() .ignoringFields("updatedAt") .ignoringFields("topics.updatedAt") @@ -218,6 +215,9 @@ void deletePin_Success() { .when().delete("/admin/pins/" + pin.getId()) .then().log().all() .statusCode(HttpStatus.NO_CONTENT.value()); + + Topic updatedTopic = topicRepository.findById(topic.getId()).get(); + assertThat(updatedTopic.getPinCount()).isEqualTo(0); } @Test diff --git a/backend/src/test/java/com/mapbefine/mapbefine/admin/application/AdminCommandServiceTest.java b/backend/src/test/java/com/mapbefine/mapbefine/admin/application/AdminCommandServiceTest.java index 288eefda..5115f01a 100644 --- a/backend/src/test/java/com/mapbefine/mapbefine/admin/application/AdminCommandServiceTest.java +++ b/backend/src/test/java/com/mapbefine/mapbefine/admin/application/AdminCommandServiceTest.java @@ -160,6 +160,20 @@ void deletePin_Success() { assertThat(pinRepository.existsById(pin.getId())).isFalse(); } + @DisplayName("핀 삭제 시, 토픽의 핀 개수를 1 감소시킨다.") + @Test + void deletePin_Success_decreaseTopicPinCount() { + //given + assertThat(pin.isDeleted()).isFalse(); + int pinCountBeforeDelete = topic.getPinCount(); + + //when + adminCommandService.deletePin(pin.getId()); + + //then + assertThat(topic.getPinCount()).isEqualTo(pinCountBeforeDelete - 1); + } + @DisplayName("Admin인 경우, 핀 이미지를 삭제할 수 있다.") @Test void deletePinImage_Success() {