From b4bb264d87478ac9006bd10f83584469a770ebd1 Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期四, 07 五月 2026 18:20:17 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/tcm-training
---
tcm-training-admin-backend/src/test/java/com/tcm/training/admin/member/service/UserAppServiceTest.java | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/member/service/UserAppServiceTest.java b/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/member/service/UserAppServiceTest.java
index 3134748..21d910b 100644
--- a/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/member/service/UserAppServiceTest.java
+++ b/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/member/service/UserAppServiceTest.java
@@ -1,14 +1,23 @@
package com.tcm.training.admin.member.service;
+import com.baomidou.mybatisplus.core.MybatisConfiguration;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tcm.training.admin.common.PageResponse;
import com.tcm.training.admin.live.mapper.ClinicMapper;
+import com.tcm.training.admin.member.entity.AppUser;
import com.tcm.training.admin.member.mapper.UserMapper;
+import com.tcm.training.admin.member.row.UserDetailRow;
import com.tcm.training.admin.member.row.UserListRow;
+import com.tcm.training.admin.member.vo.UserDetailVO;
import com.tcm.training.admin.member.vo.UserListItemVO;
+import org.apache.ibatis.builder.MapperBuilderAssistant;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
@@ -19,13 +28,22 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
+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.never;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class UserAppServiceTest {
+
+ @BeforeAll
+ static void initLambdaCache() {
+ MapperBuilderAssistant assistant = new MapperBuilderAssistant(new MybatisConfiguration(), "");
+ TableInfoHelper.initTableInfo(assistant, AppUser.class);
+ }
@Mock
private UserMapper userMapper;
@@ -88,4 +106,31 @@
assertEquals("会员状态筛选不合法", error.getMessage());
}
+
+ @Test
+ void unbindWechatShouldClearWechatFieldsWithExplicitNullUpdate() {
+ AppUser user = new AppUser();
+ user.setId(12L);
+ user.setDeleted(0);
+
+ UserDetailRow detailRow = new UserDetailRow();
+ detailRow.setId(12L);
+ detailRow.setNickname("张医生");
+
+ when(userMapper.selectOne(any())).thenReturn(user);
+ when(userMapper.selectUserDetail(12L)).thenReturn(detailRow);
+
+ UserDetailVO result = userAppService.unbindWechat(12L);
+
+ ArgumentCaptor<LambdaUpdateWrapper<AppUser>> wrapperCaptor = ArgumentCaptor.forClass(LambdaUpdateWrapper.class);
+ verify(userMapper).update(isNull(), wrapperCaptor.capture());
+ verify(userMapper, never()).updateById(any(AppUser.class));
+ String sqlSet = wrapperCaptor.getValue().getSqlSet();
+ assertTrue(sqlSet.contains("wechat_openid"));
+ assertTrue(sqlSet.contains("wechat_nickname"));
+ assertTrue(sqlSet.contains("wechat_avatar"));
+ assertTrue(sqlSet.contains("wechat_bound_at"));
+ assertTrue(wrapperCaptor.getValue().getParamNameValuePairs().values().stream().allMatch(value -> value == null));
+ assertEquals(Long.valueOf(12L), result.getId());
+ }
}
--
Gitblit v1.7.1