| | |
| | | package com.tourguide.modules.finance.service; |
| | | |
| | | import com.tourguide.modules.user.mapper.GuideUserMapper; |
| | | import com.tourguide.modules.user.mapper.GuideTeamMapper; |
| | | import com.tourguide.modules.user.entity.GuideTeam; |
| | | import org.junit.jupiter.api.BeforeEach; |
| | | import org.junit.jupiter.api.Test; |
| | | |
| | |
| | | |
| | | class GuideWithdrawableBalanceServiceTest { |
| | | private GuideUserMapper guideUserMapper; |
| | | private GuideTeamMapper teamMapper; |
| | | private GuideWithdrawableBalanceService service; |
| | | |
| | | @BeforeEach |
| | | void setUp() { |
| | | guideUserMapper = mock(GuideUserMapper.class); |
| | | service = new GuideWithdrawableBalanceService(guideUserMapper); |
| | | teamMapper = mock(GuideTeamMapper.class); |
| | | service = new GuideWithdrawableBalanceService(guideUserMapper, teamMapper); |
| | | } |
| | | |
| | | @Test |
| | |
| | | assertThat(service.debit(8L, new BigDecimal("80"))).isTrue(); |
| | | verify(guideUserMapper).decreaseBalance(8L, new BigDecimal("80.00")); |
| | | } |
| | | |
| | | @Test |
| | | void shouldReadAndAtomicallyDebitTeamBalance() { |
| | | GuideTeam team = new GuideTeam(); |
| | | team.setBalance(new BigDecimal("504.30")); |
| | | when(teamMapper.selectById(6L)).thenReturn(team); |
| | | when(teamMapper.decreaseBalance(6L, new BigDecimal("80.00"))).thenReturn(1); |
| | | |
| | | assertThat(service.getAvailableTeamAmount(6L)).isEqualByComparingTo("504.30"); |
| | | assertThat(service.debitTeam(6L, new BigDecimal("80"))).isTrue(); |
| | | verify(teamMapper).decreaseBalance(6L, new BigDecimal("80.00")); |
| | | } |
| | | } |