| | |
| | | package com.ruoyi.order.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.MybatisConfiguration; |
| | | import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.web.domain.AjaxResult; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | | import com.ruoyi.chargingPile.api.model.TAccountingStrategy; |
| | | import com.ruoyi.order.api.model.TChargingOrder; |
| | | import com.ruoyi.order.mapper.TChargingOrderMapper; |
| | | import com.ruoyi.other.api.domain.TVip; |
| | | import com.ruoyi.payment.api.feignClient.IcbcPaymentClient; |
| | | import com.ruoyi.payment.api.vo.IcbcPaymentResp; |
| | | import com.ruoyi.system.api.model.LoginUserApplet; |
| | | import org.junit.jupiter.api.BeforeEach; |
| | | import org.junit.jupiter.api.Test; |
| | | import org.apache.ibatis.builder.MapperBuilderAssistant; |
| | | import org.springframework.test.util.ReflectionTestUtils; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Map; |
| | | |
| | | import static org.junit.jupiter.api.Assertions.assertEquals; |
| | |
| | | import static org.junit.jupiter.api.Assertions.assertTrue; |
| | | import static org.mockito.ArgumentMatchers.any; |
| | | import static org.mockito.ArgumentMatchers.eq; |
| | | import static org.mockito.ArgumentMatchers.isNull; |
| | | import static org.mockito.Mockito.doReturn; |
| | | import static org.mockito.Mockito.mock; |
| | | import static org.mockito.Mockito.never; |
| | |
| | | |
| | | @BeforeEach |
| | | void setUp() { |
| | | TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ""), TChargingOrder.class); |
| | | service = spy(new TChargingOrderServiceImpl()); |
| | | TokenService tokenService = mock(TokenService.class); |
| | | icbcPaymentClient = mock(IcbcPaymentClient.class); |
| | |
| | | verify(service, never()).chargingOrderCallback(eq(1), eq(ORDER_CODE), any(), eq("1")); |
| | | } |
| | | |
| | | @Test |
| | | void localBalancePaymentUsesSavedOrderWithoutImmediateReadBack() { |
| | | TChargingOrderMapper mapper = mock(TChargingOrderMapper.class); |
| | | ReflectionTestUtils.setField(service, "baseMapper", mapper); |
| | | TChargingOrder order = new TChargingOrder(); |
| | | order.setId(9001L); |
| | | order.setCode("CD-BALANCE-WHITELIST"); |
| | | order.setRechargePaymentStatus(1); |
| | | when(mapper.update(isNull(), any(Wrapper.class))).thenReturn(0); |
| | | |
| | | AjaxResult result = service.completeChargingOrderPayment(order, "WHITELIST"); |
| | | |
| | | assertEquals(200, result.get("code")); |
| | | verify(service, never()).getOne(any(Wrapper.class)); |
| | | verify(mapper).update(isNull(), any(Wrapper.class)); |
| | | } |
| | | |
| | | @Test |
| | | void internalMemberEightZheIsStoredAsPointEight() { |
| | | TVip vip = new TVip(); |
| | | vip.setType(2); |
| | | vip.setDiscount(new BigDecimal("8")); |
| | | |
| | | BigDecimal discount = service.resolveChargingVipDiscount(vip, null); |
| | | |
| | | assertEquals(0, discount.compareTo(new BigDecimal("0.8"))); |
| | | } |
| | | |
| | | @Test |
| | | void regularMemberKeepsAccountingStrategyFactor() { |
| | | TVip vip = new TVip(); |
| | | vip.setType(1); |
| | | TAccountingStrategy strategy = new TAccountingStrategy(); |
| | | strategy.setDiscount(new BigDecimal("0.85")); |
| | | |
| | | BigDecimal discount = service.resolveChargingVipDiscount(vip, strategy); |
| | | |
| | | assertEquals(0, discount.compareTo(new BigDecimal("0.85"))); |
| | | } |
| | | |
| | | @Test |
| | | void zeroDiscountAmountDoesNotConsumeMemberUse() { |
| | | assertFalse(service.shouldConsumeVipDiscount(BigDecimal.ZERO)); |
| | | } |
| | | |
| | | @Test |
| | | void positiveDiscountAmountConsumesMemberUse() { |
| | | assertTrue(service.shouldConsumeVipDiscount(new BigDecimal("1.25"))); |
| | | } |
| | | |
| | | private TChargingOrder pendingIcbcOrder() { |
| | | TChargingOrder order = new TChargingOrder(); |
| | | order.setCode(ORDER_CODE); |