package com.ruoyi.app.stall; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.app.user.BusinessPhoneService; import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.system.domain.InfoUser; import com.ruoyi.system.domain.PosStore; import com.ruoyi.system.service.IInfoUserService; import com.ruoyi.system.service.IPosStoreService; import com.ruoyi.system.utils.JwtUtil; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import org.mockito.MockedStatic; import org.springframework.test.util.ReflectionTestUtils; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mockStatic; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; class StallControllerTest { @Test void stallOwnerUsesUniqueBusinessTelPhone() throws Exception { IPosStoreService posStoreService = mock(IPosStoreService.class); IInfoUserService infoUserService = mock(IInfoUserService.class); BusinessPhoneService businessPhoneService = mock(BusinessPhoneService.class); @SuppressWarnings("unchecked") LambdaQueryChainWrapper nameQuery = mock(LambdaQueryChainWrapper.class); when(infoUserService.lambdaQuery()).thenReturn(nameQuery); when(nameQuery.eq(any(SFunction.class), any())).thenReturn(nameQuery); when(nameQuery.one()).thenReturn(null); PosStore store = new PosStore(); store.setId(8); store.setIsStall(1); store.setUserId(10L); when(posStoreService.selectPosStoreById(8L)).thenReturn(store); StallController controller = new StallController(); ReflectionTestUtils.setField(controller, "posStoreService", posStoreService); ReflectionTestUtils.setField(controller, "infoUserService", infoUserService); ReflectionTestUtils.setField(controller, "businessPhoneService", businessPhoneService); InfoUser request = new InfoUser(); request.setStoreId(8L); request.setUserName("stall-owner"); request.setTelPhone("0912345678"); request.setPassword("password"); AjaxResult result; try (MockedStatic messages = mockStatic(MessageUtils.class)) { messages.when(() -> MessageUtils.message("no.success")).thenReturn("ok"); result = controller.addStallOwner( JwtUtil.setToken("10", "night-market"), request); } assertEquals(HttpStatus.SUCCESS, result.get(AjaxResult.CODE_TAG)); verify(businessPhoneService).ensureUnique("0912345678", null); ArgumentCaptor inserted = ArgumentCaptor.forClass(InfoUser.class); verify(infoUserService).insertInfoUser(inserted.capture()); assertEquals("0912345678", inserted.getValue().getTelPhone()); assertNull(inserted.getValue().getPhone()); assertEquals("4", inserted.getValue().getUserType()); } }