|
|
@@ -0,0 +1,135 @@
|
|
|
+package com.ylx.massage.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
|
|
+import com.ylx.massage.domain.MaTechnician;
|
|
|
+import com.ylx.massage.domain.MerchantApplyFile;
|
|
|
+import com.ylx.massage.domain.dto.MerchantApplyFileDto;
|
|
|
+import com.ylx.massage.domain.dto.MerchantApplyFileRequestDto;
|
|
|
+import com.ylx.massage.mapper.MaTechnicianMapper;
|
|
|
+import com.ylx.massage.mapper.MerchantApplyFileMapper;
|
|
|
+import org.apache.ibatis.builder.MapperBuilderAssistant;
|
|
|
+import org.junit.jupiter.api.BeforeAll;
|
|
|
+import org.junit.jupiter.api.Test;
|
|
|
+import org.mockito.ArgumentCaptor;
|
|
|
+import org.springframework.test.util.ReflectionTestUtils;
|
|
|
+
|
|
|
+import java.util.Arrays;
|
|
|
+
|
|
|
+import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
+import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
|
+import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
+import static org.mockito.ArgumentMatchers.any;
|
|
|
+import static org.mockito.ArgumentMatchers.isNull;
|
|
|
+import static org.mockito.Mockito.mock;
|
|
|
+import static org.mockito.Mockito.verify;
|
|
|
+import static org.mockito.Mockito.when;
|
|
|
+
|
|
|
+public class MaTechnicianServiceImplTest {
|
|
|
+
|
|
|
+ @BeforeAll
|
|
|
+ public static void initMybatisPlusTableInfo() {
|
|
|
+ MybatisConfiguration configuration = new MybatisConfiguration();
|
|
|
+ TableInfoHelper.initTableInfo(new MapperBuilderAssistant(configuration, ""), MaTechnician.class);
|
|
|
+ TableInfoHelper.initTableInfo(new MapperBuilderAssistant(configuration, ""), MerchantApplyFile.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void updateTechnicianOnlyUpdatesNicknameAndBriefForBaseInfo() {
|
|
|
+ MaTechnicianMapper maTechnicianMapper = mock(MaTechnicianMapper.class);
|
|
|
+ MerchantApplyFileMapper merchantApplyFileMapper = mock(MerchantApplyFileMapper.class);
|
|
|
+ when(maTechnicianMapper.update(isNull(), any(LambdaUpdateWrapper.class))).thenReturn(1);
|
|
|
+ MaTechnicianServiceImpl service = buildService(maTechnicianMapper, merchantApplyFileMapper);
|
|
|
+
|
|
|
+ MerchantApplyFileRequestDto request = new MerchantApplyFileRequestDto();
|
|
|
+ MaTechnician technician = new MaTechnician();
|
|
|
+ technician.setId(7);
|
|
|
+ technician.setTeName("不能修改的姓名");
|
|
|
+ technician.setTePhone("18800000000");
|
|
|
+ technician.setAvatar("不能修改的形象照");
|
|
|
+ technician.setTeNickName("新昵称");
|
|
|
+ technician.setTeBrief("新简介");
|
|
|
+ request.setTechnician(technician);
|
|
|
+
|
|
|
+ service.updateTechnician(request);
|
|
|
+
|
|
|
+ ArgumentCaptor<LambdaUpdateWrapper<MaTechnician>> wrapperCaptor = ArgumentCaptor.forClass(LambdaUpdateWrapper.class);
|
|
|
+ verify(maTechnicianMapper).update(isNull(), wrapperCaptor.capture());
|
|
|
+ String sqlSet = String.join(",", wrapperCaptor.getValue().getSqlSet());
|
|
|
+ assertTrue(sqlSet.contains("te_nick_name"));
|
|
|
+ assertTrue(sqlSet.contains("te_brief"));
|
|
|
+ assertFalse(sqlSet.contains("te_name"));
|
|
|
+ assertFalse(sqlSet.contains("te_phone"));
|
|
|
+ assertFalse(sqlSet.contains("avatar"));
|
|
|
+ assertFalse(sqlSet.contains("te_avatar"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void updateTechnicianUpsertsApplyFilesByMerchantAndFileType() {
|
|
|
+ MaTechnicianMapper maTechnicianMapper = mock(MaTechnicianMapper.class);
|
|
|
+ MerchantApplyFileMapper merchantApplyFileMapper = mock(MerchantApplyFileMapper.class);
|
|
|
+ when(maTechnicianMapper.update(isNull(), any(LambdaUpdateWrapper.class))).thenReturn(1);
|
|
|
+ MerchantApplyFile existsFile = new MerchantApplyFile();
|
|
|
+ existsFile.setId(3L);
|
|
|
+ existsFile.setMerchantId(7);
|
|
|
+ existsFile.setFileType("1");
|
|
|
+ when(merchantApplyFileMapper.selectOne(any(LambdaQueryWrapper.class))).thenReturn(existsFile, null);
|
|
|
+ MaTechnicianServiceImpl service = buildService(maTechnicianMapper, merchantApplyFileMapper);
|
|
|
+
|
|
|
+ MerchantApplyFileRequestDto request = new MerchantApplyFileRequestDto();
|
|
|
+ MaTechnician technician = new MaTechnician();
|
|
|
+ technician.setId(7);
|
|
|
+ technician.setTeNickName("新昵称");
|
|
|
+ technician.setTeBrief("新简介");
|
|
|
+ request.setTechnician(technician);
|
|
|
+
|
|
|
+ MerchantApplyFileDto updateFile = buildFile(7, "1", "new-image.jpg", "https://file/new-image.jpg");
|
|
|
+ MerchantApplyFileDto insertFile = buildFile(7, "2", "life.jpg", "https://file/life.jpg");
|
|
|
+ request.setReq(Arrays.asList(updateFile, insertFile));
|
|
|
+
|
|
|
+ service.updateTechnician(request);
|
|
|
+
|
|
|
+ ArgumentCaptor<MerchantApplyFile> updateCaptor = ArgumentCaptor.forClass(MerchantApplyFile.class);
|
|
|
+ verify(merchantApplyFileMapper).updateById(updateCaptor.capture());
|
|
|
+ MerchantApplyFile updatedFile = updateCaptor.getValue();
|
|
|
+ assertEquals(3L, updatedFile.getId());
|
|
|
+ assertEquals(7, updatedFile.getMerchantId());
|
|
|
+ assertEquals("1", updatedFile.getFileType());
|
|
|
+ assertEquals("new-image.jpg", updatedFile.getFileName());
|
|
|
+ assertEquals("https://file/new-image.jpg", updatedFile.getFileUrl());
|
|
|
+ assertEquals("7", updatedFile.getUpdateBy());
|
|
|
+ assertEquals(0, updatedFile.getIsDelete());
|
|
|
+
|
|
|
+ ArgumentCaptor<MerchantApplyFile> insertCaptor = ArgumentCaptor.forClass(MerchantApplyFile.class);
|
|
|
+ verify(merchantApplyFileMapper).insert(insertCaptor.capture());
|
|
|
+ MerchantApplyFile insertedFile = insertCaptor.getValue();
|
|
|
+ assertEquals(7, insertedFile.getMerchantId());
|
|
|
+ assertEquals("2", insertedFile.getFileType());
|
|
|
+ assertEquals("life.jpg", insertedFile.getFileName());
|
|
|
+ assertEquals("https://file/life.jpg", insertedFile.getFileUrl());
|
|
|
+ assertEquals("7", insertedFile.getCreateBy());
|
|
|
+ assertEquals("7", insertedFile.getUpdateBy());
|
|
|
+ assertEquals(0, insertedFile.getIsDelete());
|
|
|
+ }
|
|
|
+
|
|
|
+ private MaTechnicianServiceImpl buildService(MaTechnicianMapper maTechnicianMapper,
|
|
|
+ MerchantApplyFileMapper merchantApplyFileMapper) {
|
|
|
+ MaTechnicianServiceImpl service = new MaTechnicianServiceImpl();
|
|
|
+ ReflectionTestUtils.setField(service, "maTechnicianMapper", maTechnicianMapper);
|
|
|
+ ReflectionTestUtils.setField(service, "merchantApplyFileMapper", merchantApplyFileMapper);
|
|
|
+ return service;
|
|
|
+ }
|
|
|
+
|
|
|
+ private MerchantApplyFileDto buildFile(Integer merchantId, String fileType, String fileName, String fileUrl) {
|
|
|
+ MerchantApplyFileDto file = new MerchantApplyFileDto();
|
|
|
+ file.setMerchantId(merchantId);
|
|
|
+ file.setFileType(fileType);
|
|
|
+ file.setFileName(fileName);
|
|
|
+ file.setFileUrl(fileUrl);
|
|
|
+ file.setFileSize(1024L);
|
|
|
+ file.setContentType("image/jpeg");
|
|
|
+ return file;
|
|
|
+ }
|
|
|
+}
|