Project
[Toss] 잔액사용 확인(2)
sangyunpark
2023. 8. 26. 01:06
Test코드를 작성해보자
Controller Test Code
@Test
@DisplayName("")
void successGetTransaction() throws Exception{
//given
given(transactionService.getTransactionByTransactionId(anyString()))
.willReturn(
TransactionDto.builder()
.transactionId("21asfq3qpeu12351cxv")
.accountNumber("1234567890")
.transactionType(USE)
.transactionResultType(SUCCESS)
.amount(1000L)
.transactedAt(LocalDateTime.now())
.build()
);
//when
//then
mockMvc.perform(get("/transaction?id=sadfsaffe"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.accountNumber").value("1234567890"))
.andExpect(jsonPath("$.transactionId").value("21asfq3qpeu12351cxv"))
.andExpect(jsonPath("$.transactionResultType").value("SUCCESS"))
.andExpect(jsonPath("$.amount").value(1000L));
}
Service Test Code
성공 Case
@Test
@DisplayName("트랜잭션 가져오기 성공")
void succesGetTransaction() throws Exception{
AccountUser user = AccountUser.builder()
.id(12L)
.name("sy")
.build();
Account account = Account.builder()
.id(12L)
.accountUser(user)
.accountStatus(IN_USE)
.accountNumber("1000000012")
.balance(9000L)
.build();
//given
given(transactionRepository.findByTransactionId(anyString()))
.willReturn(
Optional.of(
Transaction.builder()
.transactionId("asdf")
.id(12L)
.account(account)
.amount(1000L)
.transactionResultType(SUCCESS)
.build()
)
);
//when
//then
TransactionDto transaction = transactionService.getTransactionByTransactionId("asdf");
assertEquals("asdf", transaction.getTransactionId());
assertEquals(1000L, transaction.getAmount());
}
실패 Case
@Test
@DisplayName("트랜잭션 가져오기 실패 - 트랜잭션이 존재하지 않는 경우")
void failGetTransaction() throws Exception{
AccountUser user = AccountUser.builder()
.id(12L)
.name("sy")
.build();
Account account = Account.builder()
.id(12L)
.accountUser(user)
.accountStatus(IN_USE)
.accountNumber("1000000012")
.balance(9000L)
.build();
//given
given(transactionRepository.findByTransactionId(anyString()))
.willReturn(
Optional.empty()
);
//when
//then
AccountException exception = assertThrows(AccountException.class,() -> transactionService.getTransactionByTransactionId("asdf"));
assertEquals(ErrorCode.TRANSACTION_NOT_FOUND, exception.getErrorCode());
}