package xiaozhi.modules.device.service.impl; 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.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.List; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import xiaozhi.common.redis.RedisUtils; import xiaozhi.modules.device.dao.DeviceAddressBookDao; import xiaozhi.modules.device.entity.DeviceAddressBookEntity; import xiaozhi.modules.device.service.DeviceService; import xiaozhi.modules.sys.service.SysParamsService; class DeviceAddressBookServiceImplTest { @Test void newEntryUsesTheDedicatedAddressBookInsertMapping() { DeviceAddressBookDao addressBookDao = mock(DeviceAddressBookDao.class); RedisUtils redisUtils = mock(RedisUtils.class); DeviceService deviceService = mock(DeviceService.class); SysParamsService sysParamsService = mock(SysParamsService.class); DeviceAddressBookServiceImpl service = new DeviceAddressBookServiceImpl( addressBookDao, redisUtils, deviceService, sysParamsService); when(addressBookDao.selectOne(any())).thenReturn(null); when(addressBookDao.selectList(null)).thenReturn(List.of()); service.saveOrUpdate("00:11:22:33:44:55", "00:11:22:33:44:66", "living-room", true); ArgumentCaptor entityCaptor = ArgumentCaptor.forClass(DeviceAddressBookEntity.class); verify(addressBookDao).insertAddressBook(entityCaptor.capture()); DeviceAddressBookEntity entity = entityCaptor.getValue(); assertEquals("00:11:22:33:44:55", entity.getMacAddress()); assertEquals("00:11:22:33:44:66", entity.getTargetMac()); assertEquals("living-room", entity.getAlias()); assertTrue(entity.getHasPermission()); verify(addressBookDao, never()).insert(any(DeviceAddressBookEntity.class)); } }