From 1b3bf864d3c419711e5da75efd00948bc76d8216 Mon Sep 17 00:00:00 2001 From: SSung023 <50323157+SSung023@users.noreply.github.com> Date: Sun, 28 Jul 2024 19:40:52 +0900 Subject: [PATCH] =?UTF-8?q?test:=20=EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/controller/StoreControllerTest.java | 4 - .../gitget/store/facade/StoreFacadeTest2.java | 553 ------------------ 2 files changed, 557 deletions(-) delete mode 100644 src/test/java/com/genius/gitget/store/controller/StoreControllerTest.java delete mode 100644 src/test/java/com/genius/gitget/store/facade/StoreFacadeTest2.java diff --git a/src/test/java/com/genius/gitget/store/controller/StoreControllerTest.java b/src/test/java/com/genius/gitget/store/controller/StoreControllerTest.java deleted file mode 100644 index 8dd768b1..00000000 --- a/src/test/java/com/genius/gitget/store/controller/StoreControllerTest.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.genius.gitget.store.controller; - -public class StoreControllerTest { -} diff --git a/src/test/java/com/genius/gitget/store/facade/StoreFacadeTest2.java b/src/test/java/com/genius/gitget/store/facade/StoreFacadeTest2.java deleted file mode 100644 index ff522ce8..00000000 --- a/src/test/java/com/genius/gitget/store/facade/StoreFacadeTest2.java +++ /dev/null @@ -1,553 +0,0 @@ -package com.genius.gitget.store.facade; - -import static com.genius.gitget.challenge.certification.domain.CertificateStatus.CERTIFICATED; -import static com.genius.gitget.challenge.certification.domain.CertificateStatus.NOT_YET; -import static com.genius.gitget.challenge.certification.domain.CertificateStatus.PASSED; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -import com.genius.gitget.challenge.certification.domain.CertificateStatus; -import com.genius.gitget.challenge.certification.domain.Certification; -import com.genius.gitget.challenge.certification.repository.CertificationRepository; -import com.genius.gitget.challenge.certification.util.DateUtil; -import com.genius.gitget.challenge.instance.domain.Instance; -import com.genius.gitget.challenge.instance.domain.Progress; -import com.genius.gitget.challenge.instance.repository.InstanceRepository; -import com.genius.gitget.challenge.participant.domain.JoinResult; -import com.genius.gitget.challenge.participant.domain.JoinStatus; -import com.genius.gitget.challenge.participant.domain.Participant; -import com.genius.gitget.challenge.participant.repository.ParticipantRepository; -import com.genius.gitget.challenge.user.domain.Role; -import com.genius.gitget.challenge.user.domain.User; -import com.genius.gitget.challenge.user.repository.UserRepository; -import com.genius.gitget.global.security.constants.ProviderInfo; -import com.genius.gitget.global.util.exception.BusinessException; -import com.genius.gitget.global.util.exception.ErrorCode; -import com.genius.gitget.store.item.domain.EquipStatus; -import com.genius.gitget.store.item.domain.Item; -import com.genius.gitget.store.item.domain.ItemCategory; -import com.genius.gitget.store.item.domain.Orders; -import com.genius.gitget.store.item.dto.ItemResponse; -import com.genius.gitget.store.item.dto.OrderResponse; -import com.genius.gitget.store.item.dto.ProfileResponse; -import com.genius.gitget.store.item.facade.StoreFacade; -import com.genius.gitget.store.item.repository.ItemRepository; -import com.genius.gitget.store.item.repository.OrdersRepository; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Optional; -import lombok.extern.slf4j.Slf4j; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.EnumSource; -import org.junit.jupiter.params.provider.EnumSource.Mode; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.transaction.annotation.Transactional; - -@Slf4j -@SpringBootTest -@Transactional -class StoreFacadeTest2 { - - @Autowired - private StoreFacade storeFacade; - @Autowired - private UserRepository userRepository; - @Autowired - private ItemRepository itemRepository; - @Autowired - private OrdersRepository ordersRepository; - @Autowired - private InstanceRepository instanceRepository; - @Autowired - private ParticipantRepository participantRepository; - @Autowired - private CertificationRepository certificationRepository; - - @ParameterizedTest - @DisplayName("카테고리에 해당하는 아이템들을 받아올 수 있다.") - @EnumSource(ItemCategory.class) - public void should_getItems_when_passCategory(ItemCategory itemCategory) { - //given - User user = getSavedUser(); - Item item = getSavedItem(itemCategory); - Orders orders = getSavedOrder(user, item, itemCategory, 1); - - //when - List itemResponses = storeFacade.getItemsByCategory(user, itemCategory); - - //then - for (ItemResponse itemResponse : itemResponses) { - assertThat(itemResponse.getName()).contains(itemCategory.getName()); - assertThat(itemResponse.getDetails()).isNotBlank(); - } - } - - @ParameterizedTest - @DisplayName("사용자의 포인트가 충분할 때, itemId(PK)를 전달하여 아이템을 구매할 수 있다.") - @EnumSource(mode = Mode.EXCLUDE, names = {"PROFILE_FRAME"}) - public void should_purchaseItem_when_passPK(ItemCategory itemCategory) { - //given - User user = getSavedUser(); - Item item = getSavedItem(itemCategory); - - user.updatePoints(1000L); - - //when - ItemResponse itemResponse = storeFacade.orderItem(user, item.getId()); - - //then - assertThat(itemResponse.getItemId()).isEqualTo(item.getIdentifier()); - assertThat(itemResponse.getName()).isEqualTo(item.getName()); - assertThat(itemResponse.getCost()).isEqualTo(item.getCost()); - assertThat(itemResponse.getCount()).isEqualTo(1); - } - - @ParameterizedTest - @DisplayName("사용자의 포인트가 충분하지 않을 때, 아이템 구매를 시도하면 예외가 발생해야 한다.") - @EnumSource(ItemCategory.class) - public void should_throwException_when_pointNotEnough(ItemCategory itemCategory) { - //given - User user = getSavedUser(); - Item item = getSavedItem(itemCategory); - - //when & then - assertThatThrownBy(() -> storeFacade.orderItem(user, item.getId())) - .isInstanceOf(BusinessException.class) - .hasMessageContaining(ErrorCode.NOT_ENOUGH_POINT.getMessage()); - } - - @Test - @DisplayName("UserItem 정보는 있으나 아이템의 개수가 0 이하일 때 인증 패스를 요청하면 예외가 발생해야 한다.") - public void should_throwException_when_outOfStock() { - //given - LocalDate currentDate = LocalDate.of(2024, 3, 1); - User user = getSavedUser(); - Item item = getSavedItem(ItemCategory.PROFILE_FRAME); - Instance instance = getSavedInstance(); - Participant participant = getSavedParticipant(user, instance); - Orders orders = getSavedOrder(user, item, ItemCategory.CERTIFICATION_PASSER, 0); - - instance.updateProgress(Progress.ACTIVITY); - - //when && then - assertThatThrownBy(() -> storeFacade.useItem(user, item.getId(), instance.getId(), currentDate)) - .isInstanceOf(BusinessException.class) - .hasMessageContaining(ErrorCode.HAS_NO_ITEM.getMessage()); - } - - @Test - @DisplayName("UserItem 정보가 DB에 존재하지 않을 때 인증 패스를 요청하면 예외가 발생해야 한다.") - public void should_throwException_when_userItemInfoNotExist() { - //given - LocalDate currentDate = LocalDate.of(2024, 3, 1); - User user = getSavedUser(); - Instance instance = getSavedInstance(); - Participant participant = getSavedParticipant(user, instance); - Item item = getSavedItem(ItemCategory.CERTIFICATION_PASSER); - - //when - getSavedCertification(NOT_YET, currentDate, participant); - - //then - assertThatThrownBy(() -> storeFacade.useItem(user, item.getId(), instance.getId(), currentDate)) - .isInstanceOf(BusinessException.class) - .hasMessageContaining(ErrorCode.ORDERS_NOT_FOUND.getMessage()); - } - - @Test - @DisplayName("프로필 프레임을 구매했는데 장착하지 않은 경우에는 프레임을 사용할 수 있다.") - public void should_useFrameItem_when_availableToEquip() { - //given - LocalDate currentDate = LocalDate.of(2024, 3, 1); - User user = getSavedUser(); - Instance instance = getSavedInstance(); - Participant participant = getSavedParticipant(user, instance); - Item item = getSavedItem(ItemCategory.PROFILE_FRAME); - Orders orders = getSavedOrder(user, item, item.getItemCategory(), 1); - - //when - orders.updateEquipStatus(EquipStatus.AVAILABLE); - OrderResponse orderResponse = storeFacade.useItem(user, item.getId(), instance.getId(), currentDate); - - //then - assertThat(orders.getEquipStatus()).isEqualTo(EquipStatus.IN_USE); - } - - @Test - @DisplayName("프로필 프레임을 재구매시도할 경우 예외가 발생해야 한다.") - public void should_throwException_when_tryOrderFrameAgain() { - User user = getSavedUser(); - Item item = getSavedItem(ItemCategory.PROFILE_FRAME); - - user.updatePoints(1000L); - - // when - storeFacade.orderItem(user, item.getId()); - - //when & then - assertThatThrownBy(() -> storeFacade.orderItem(user, item.getId())) - .isInstanceOf(BusinessException.class) - .hasMessageContaining(ErrorCode.ALREADY_PURCHASED.getMessage()); - } - - @Test - @DisplayName("프로필 프레임을 사용하려 할 때, 해당 프레임에 대한 수량이 0이라면 예외가 발생해야 한다.") - public void should_throwException_when_dontHaveItem() { - //given - User user = getSavedUser(); - Item item = getSavedItem(ItemCategory.PROFILE_FRAME); - getSavedOrder(user, item, ItemCategory.PROFILE_FRAME, 0); - - //when && then - assertThatThrownBy(() -> storeFacade.useItem(user, item.getId(), 0L, LocalDate.now())) - .isInstanceOf(BusinessException.class) - .hasMessageContaining(ErrorCode.HAS_NO_ITEM.getMessage()); - } - - @Test - @DisplayName("프로필 프레임을 사용하려 할 때, 프레임의 장착 상태가 Unavailable인 경우 장착 가능 상태가 아니라는 예외가 발생한다.") - public void should_throwException_when_notAvailable() { - //given - User user = getSavedUser(); - Item item = getSavedItem(ItemCategory.PROFILE_FRAME); - Orders orders = getSavedOrder(user, item, ItemCategory.PROFILE_FRAME, 3); - - orders.updateEquipStatus(EquipStatus.UNAVAILABLE); - - //when && then - assertThatThrownBy(() -> storeFacade.useItem(user, item.getId(), 0L, LocalDate.now())) - .isInstanceOf(BusinessException.class) - .hasMessageContaining(ErrorCode.INVALID_EQUIP_CONDITION.getMessage()); - } - - @Test - @DisplayName("프로필 프레임을 사용하려할 때, 장착 중인 프레임이 있는 경우 장착 해제를 먼저 실행하라는 예외가 발생한다.") - public void should_throwException_when_inUseItemExist() { - //given - User user = getSavedUser(); - Item item = getSavedItem(ItemCategory.PROFILE_FRAME); - Orders orders = getSavedOrder(user, item, ItemCategory.PROFILE_FRAME, 3); - - orders.updateEquipStatus(EquipStatus.IN_USE); - - //when && then - assertThatThrownBy(() -> storeFacade.useItem(user, item.getId(), 0L, LocalDate.now())) - .isInstanceOf(BusinessException.class) - .hasMessageContaining(ErrorCode.TOO_MANY_USING_FRAME.getMessage()); - } - - @Test - @DisplayName("인증 패스 아이템을 보유하고 있을 떄, 인증을 시도했으나 실패했을 때 아이템을 사용할 수 있다.") - public void should_usePasserItem_when_ableToUsePassItem() { - //given - LocalDate currentDate = LocalDate.of(2024, 3, 1); - User user = getSavedUser(); - Instance instance = getSavedInstance(); - Participant participant = getSavedParticipant(user, instance); - Item item = getSavedItem(ItemCategory.CERTIFICATION_PASSER); - Orders orders = getSavedOrder(user, item, item.getItemCategory(), 1); - - //when - instance.updateProgress(Progress.ACTIVITY); - Certification certification = getSavedCertification(NOT_YET, currentDate, participant); - OrderResponse orderResponse = storeFacade.useItem(user, item.getId(), instance.getId(), currentDate); - - //then - assertThat(orders.getCount()).isEqualTo(0); - assertThat(certification.getCertificationStatus()).isEqualTo(PASSED); - } - - @Test - @DisplayName("인증 패스 아이템을 보유하고 있고, 인증을 아직 시도하지 않았을 때 아이템을 사용할 수 있다.") - public void should_usePasserItem_when_useItemNotYet() { - //given - LocalDate currentDate = LocalDate.of(2024, 3, 1); - User user = getSavedUser(); - Instance instance = getSavedInstance(); - Participant participant = getSavedParticipant(user, instance); - Item item = getSavedItem(ItemCategory.CERTIFICATION_PASSER); - Orders orders = getSavedOrder(user, item, item.getItemCategory(), 1); - - //when - instance.updateProgress(Progress.ACTIVITY); - - //then - OrderResponse orderResponse = storeFacade.useItem(user, item.getId(), instance.getId(), currentDate); - - //then - Optional certification = certificationRepository.findByDate(currentDate, participant.getId()); - assertThat(orders.getCount()).isEqualTo(0); - assertThat(certification).isPresent(); - assertThat(certification.get().getCertificationStatus()).isEqualTo(PASSED); - } - - @Test - @DisplayName("인증 패스 아이템을 보유하고 있으나, 인스턴스의 상태가 ACTIVITY가 아니라면 사용 시도 시 예외가 발생해야 한다.") - public void should_throwException_when_ProgressIsNotActivity() { - //given - LocalDate currentDate = LocalDate.of(2024, 3, 1); - User user = getSavedUser(); - Instance instance = getSavedInstance(); - Participant participant = getSavedParticipant(user, instance); - Item item = getSavedItem(ItemCategory.CERTIFICATION_PASSER); - Orders orders = getSavedOrder(user, item, item.getItemCategory(), 1); - - //when & then - assertThatThrownBy(() -> storeFacade.useItem(user, item.getId(), instance.getId(), currentDate)) - .isInstanceOf(BusinessException.class) - .hasMessageContaining(ErrorCode.NOT_ACTIVITY_INSTANCE.getMessage()); - } - - @ParameterizedTest - @DisplayName("인증 패스 아이템을 보유하고 있으나, 인증 상태가 PASSED 혹은 CERTIFICATED라면 예외가 발생해야 한다.") - @EnumSource(mode = Mode.INCLUDE, names = {"CERTIFICATED", "PASSED"}) - public void should_throwException_when_notNOT_YET(CertificateStatus certificateStatus) { - //given - LocalDate currentDate = LocalDate.of(2024, 3, 1); - User user = getSavedUser(); - Instance instance = getSavedInstance(); - Participant participant = getSavedParticipant(user, instance); - Item item = getSavedItem(ItemCategory.CERTIFICATION_PASSER); - getSavedOrder(user, item, item.getItemCategory(), 1); - - //when - instance.updateProgress(Progress.ACTIVITY); - getSavedCertification(certificateStatus, currentDate, participant); - - //then - assertThatThrownBy(() -> storeFacade.useItem(user, item.getId(), instance.getId(), currentDate)) - .isInstanceOf(BusinessException.class) - .hasMessageContaining(ErrorCode.CAN_NOT_USE_PASS_ITEM.getMessage()); - } - - @Test - @DisplayName("인스턴스의 상태가 DONE이고 2배 획득 아이템을 보유하고 있을 때, 포인트 보상을 2배로 받을 수 있다.") - public void should_getRewardTwice_when_conditionMatches() { - //given - LocalDate currentDate = LocalDate.of(2024, 3, 1); - User user = getSavedUser(); - Instance instance = getSavedInstance(currentDate, currentDate.plusDays(1)); - Participant participant = getSavedParticipant(user, instance); - Item item = getSavedItem(ItemCategory.POINT_MULTIPLIER); - Orders orders = getSavedOrder(user, item, item.getItemCategory(), 1); - - //when - Long previousPoint = user.getPoint(); - instance.updateProgress(Progress.DONE); - participant.updateJoinResult(JoinResult.SUCCESS); - getSavedCertification(CERTIFICATED, currentDate, participant); - getSavedCertification(CERTIFICATED, currentDate.plusDays(1), participant); - storeFacade.useItem(user, item.getId(), instance.getId(), currentDate.plusDays(1)); - Long afterRewards = user.getPoint(); - - //then - assertThat(afterRewards - previousPoint).isEqualTo(instance.getPointPerPerson() * 2L); - assertThat(orders.getCount()).isEqualTo(0); - } - - @Test - @DisplayName("포인트 2배 획득 아이템을 사용해서 아이템의 개수가 0이 되면 Orders 정보를 DB에서 삭제된다.") - public void should_deleteOrderInfo_when_countZeroAfterUseItem() { - //given - LocalDate currentDate = LocalDate.of(2024, 3, 1); - User user = getSavedUser(); - Instance instance = getSavedInstance(currentDate, currentDate.plusDays(1)); - Participant participant = getSavedParticipant(user, instance); - Item item = getSavedItem(ItemCategory.POINT_MULTIPLIER); - Orders orders = getSavedOrder(user, item, item.getItemCategory(), 1); - - //when - instance.updateProgress(Progress.DONE); - participant.updateJoinResult(JoinResult.SUCCESS); - getSavedCertification(CERTIFICATED, currentDate, participant); - getSavedCertification(CERTIFICATED, currentDate.plusDays(1), participant); - storeFacade.useItem(user, item.getId(), instance.getId(), currentDate.plusDays(1)); - - //then - assertThat(ordersRepository.findById(orders.getId())).isNotPresent(); - } - - @Test - @DisplayName("인증 패스 아이템을 사용해서 아이템의 개수가 0이 되면 Orders 정보를 DB에서 삭제된다.") - public void should_deleteOrderInfo_when_passItemCountIsZero() { - //given - LocalDate currentDate = LocalDate.of(2024, 3, 1); - User user = getSavedUser(); - Instance instance = getSavedInstance(currentDate, currentDate.plusDays(1)); - Participant participant = getSavedParticipant(user, instance); - Item item = getSavedItem(ItemCategory.CERTIFICATION_PASSER); - Orders orders = getSavedOrder(user, item, item.getItemCategory(), 1); - - //when - instance.updateProgress(Progress.ACTIVITY); - storeFacade.useItem(user, item.getId(), instance.getId(), currentDate.plusDays(1)); - - //then - assertThat(ordersRepository.findById(orders.getId())).isNotPresent(); - } - - @Test - @DisplayName("사용자가 특정 프로필 프레임을 장착하고 있을 떄, 장착 해제할 수 있다.") - public void should_unmountFrame_when_mountAlready() { - //given - User user = getSavedUser(); - Item item = getSavedItem(ItemCategory.PROFILE_FRAME); - getSavedOrder(user, item, ItemCategory.PROFILE_FRAME, 1); - - //when - storeFacade.useItem(user, item.getId(), 0L, LocalDate.now()); - ProfileResponse profileResponse = storeFacade.unmountFrame(user).get(0); - - //then - assertThat(profileResponse.getItemId()).isEqualTo(item.getIdentifier()); - assertThat(profileResponse.getCost()).isEqualTo(item.getCost()); - assertThat(profileResponse.getItemCategory()).isEqualTo(ItemCategory.PROFILE_FRAME); - assertThat(profileResponse.getEquipStatus()).isEqualTo(EquipStatus.AVAILABLE.getTag()); - } - - @ParameterizedTest - @DisplayName("사용자가 아이템 장착 해제를 요청했을 때, 프로필 프레임이 아니라면 응답 데이터의 크기가 0이다.") - @EnumSource(mode = Mode.EXCLUDE, names = {"PROFILE_FRAME"}) - public void should_throwException_when_categoryIsNotFrame(ItemCategory itemCategory) { - //given - User user = getSavedUser(); - Item item = getSavedItem(itemCategory); - Orders orders = getSavedOrder(user, item, item.getItemCategory(), 1); - - //when - List profileResponses = storeFacade.unmountFrame(user); - - //when & then - assertThat(profileResponses.size()).isEqualTo(0); - } - - @Test - @DisplayName("사용자가 아이템 장착 해제를 요청했을 때, 사용 상태가 IN_USE가 아니라면 반환데이터의 크기가 0이다.") - public void should_throwException_when_equipStatusIsNotIS_USE() { - //given - User user = getSavedUser(); - Item item = getSavedItem(ItemCategory.PROFILE_FRAME); - getSavedOrder(user, item, item.getItemCategory(), 1); - - // when - List profileResponses = storeFacade.unmountFrame(user); - - //when & then - assertThat(profileResponses.size()).isEqualTo(0); - } - - private User getSavedUser() { - return userRepository.save( - User.builder() - .role(Role.USER) - .nickname("nickname") - .providerInfo(ProviderInfo.GITHUB) - .identifier("identifier") - .build() - ); - } - - private Item getSavedItem(ItemCategory itemCategory) { - return itemRepository.save(Item.builder() - .identifier(10) - .itemCategory(itemCategory) - .cost(100) - .name(itemCategory.getName()) - .details("details") - .build()); - } - - private Orders getSavedOrder(User user, Item item, ItemCategory itemCategory, int count) { - Orders orders = Orders.of(count, itemCategory); - orders.setItem(item); - orders.setUser(user); - return ordersRepository.save(orders); - } - - private Instance getSavedInstance() { - return instanceRepository.save( - Instance.builder() - .progress(Progress.PREACTIVITY) - .startedDate(LocalDateTime.of(2024, 2, 1, 0, 0)) - .completedDate(LocalDateTime.of(2024, 3, 29, 0, 0)) - .build() - ); - } - - private Instance getSavedInstance(LocalDate startDate, LocalDate completeDate) { - return instanceRepository.save( - Instance.builder() - .progress(Progress.PREACTIVITY) - .startedDate(startDate.atTime(0, 0)) - .completedDate(completeDate.atTime(0, 0)) - .build() - ); - } - - private Participant getSavedParticipant(User user, Instance instance) { - Participant participant = participantRepository.save( - Participant.builder() - .joinResult(JoinResult.PROCESSING) - .joinStatus(JoinStatus.YES) - .build() - ); - participant.setUserAndInstance(user, instance); - participant.updateRepository("targetRepo"); - - return participant; - } - - private Certification getSavedCertification(CertificateStatus status, LocalDate certificatedAt, - Participant participant) { - int attempt = DateUtil.getAttemptCount(participant.getStartedDate(), certificatedAt); - Certification certification = Certification.builder() - .certificationStatus(status) - .currentAttempt(attempt) - .certificatedAt(certificatedAt) - .certificationLinks("certificationLink") - .build(); - certification.setParticipant(participant); - return certificationRepository.save(certification); - } - - @Nested - class 유저_포인트가_충분할_때 { - - @ParameterizedTest - @EnumSource(mode = Mode.EXCLUDE, names = {"PROFILE_FRAME"}) - public void 아이템을_구매할_수_있다_1(ItemCategory itemCategory) { - User user = getSavedUser(); - Item item = getSavedItem(itemCategory); - getSavedOrder(user, item, itemCategory, 0); - user.updatePoints(1000L); - - ItemResponse itemResponse = storeFacade.orderItem(user, item.getId()); - - assertThat(itemResponse.getItemCategory()).isEqualTo(itemCategory); - } - - @ParameterizedTest - @EnumSource(mode = Mode.EXCLUDE, names = {"PROFILE_FRAME"}) - public void 아이템을_구매할_수_있다_2(ItemCategory itemCategory) { - User user = getSavedUser(); - Item item = getSavedItem(itemCategory); - getSavedOrder(user, item, itemCategory, 0); - user.updatePoints(1000L); - - ItemResponse itemResponse1 = storeFacade.orderItem(user, item.getId()); - - assertThat(user.getPoint()).isEqualTo(900L); - assertThat(itemResponse1.getCount()).isEqualTo(1); - - ItemResponse itemResponse2 = storeFacade.orderItem(user, item.getId()); - - assertThat(user.getPoint()).isEqualTo(800L); - assertThat(itemResponse2.getCount()).isEqualTo(2); - } - } -} \ No newline at end of file