From 825a575deb96cce822468bb9d9ac3e4eea0f91d1 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 17 九月 2026 08:58:14 +0800
Subject: [PATCH] update

---
 backend/src/test/java/com/tourguide/modules/user/service/GuideUserServiceProfileTest.java |   66 +++++++++++++++++++++++++++++---
 1 files changed, 59 insertions(+), 7 deletions(-)

diff --git a/backend/src/test/java/com/tourguide/modules/user/service/GuideUserServiceProfileTest.java b/backend/src/test/java/com/tourguide/modules/user/service/GuideUserServiceProfileTest.java
index 291c985..a185f79 100644
--- a/backend/src/test/java/com/tourguide/modules/user/service/GuideUserServiceProfileTest.java
+++ b/backend/src/test/java/com/tourguide/modules/user/service/GuideUserServiceProfileTest.java
@@ -24,6 +24,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -95,11 +96,14 @@
     }
 
     @Test
-    void shouldReuseCancelledGuideForNewRegistration() {
+    void shouldCreateNewGuideForCancelledRegistration() {
         GuideUser cancelledGuide = new GuideUser();
         cancelledGuide.setId(12L);
         cancelledGuide.setStatus(GuideUserService.STATUS_CANCELLED);
         cancelledGuide.setMobile("13800138000");
+        cancelledGuide.setUsername("13800138000");
+        cancelledGuide.setCertificateNo("CERT-12");
+        cancelledGuide.setIdCardNo("11010519491231002X");
         cancelledGuide.setAutoDisableWhitelisted(1);
         cancelledGuide.setAutoDisabled(1);
         when(userMapper.selectOne(any())).thenReturn(cancelledGuide);
@@ -111,12 +115,60 @@
 
         service.createPendingFromApplication(application);
 
-        ArgumentCaptor<GuideUser> captor = ArgumentCaptor.forClass(GuideUser.class);
-        verify(userMapper).updateById(captor.capture());
-        GuideUser reusedGuide = captor.getValue();
-        assertThat(reusedGuide.getStatus()).isEqualTo(GuideUserService.STATUS_PENDING);
-        assertThat(reusedGuide.getAutoDisableWhitelisted()).isZero();
-        assertThat(reusedGuide.getAutoDisabled()).isZero();
+        verify(userMapper).anonymizeCancelledGuide(eq(12L), org.mockito.ArgumentMatchers.argThat(
+                username -> username.startsWith("deleted_") && username.length() == 32));
+        verify(userMapper).clearCancelledIdentityByIdCard("11010519491231002X");
+
+        ArgumentCaptor<GuideUser> insertCaptor = ArgumentCaptor.forClass(GuideUser.class);
+        verify(userMapper).insert(insertCaptor.capture());
+        GuideUser newGuide = insertCaptor.getValue();
+        assertThat(newGuide.getStatus()).isEqualTo(GuideUserService.STATUS_PENDING);
+        assertThat(newGuide.getUsername()).isEqualTo("13800138000");
+        assertThat(newGuide.getMobile()).isEqualTo("13800138000");
+        assertThat(newGuide.getAutoDisableWhitelisted()).isNull();
+        assertThat(newGuide.getAutoDisabled()).isNull();
+    }
+
+    @Test
+    void shouldReleaseIdentityFromStaleCancelledGuideBeforeNewRegistration() {
+        GuideApplication application = new GuideApplication();
+        application.setMobile("13900139000");
+        application.setRealName("新导游");
+        application.setIdCardNo("11010519491231002X");
+        when(userMapper.selectOne(any())).thenReturn(null);
+
+        service.createPendingFromApplication(application);
+
+        verify(userMapper).clearCancelledIdentityByIdCard("11010519491231002X");
+        verify(userMapper).insert(any(GuideUser.class));
+    }
+
+    @Test
+    void shouldReleaseIdentityFromStalePendingGuideBeforeNewRegistration() {
+        GuideApplication application = new GuideApplication();
+        application.setMobile("13900139000");
+        application.setRealName("新导游");
+        application.setIdCardNo("11010519491231002X");
+        when(userMapper.selectOne(any())).thenReturn(null);
+
+        service.createPendingFromApplication(application);
+
+        verify(userMapper).clearCancelledIdentityByIdCard("11010519491231002X");
+        verify(userMapper).clearPendingIdentityByIdCard("11010519491231002X");
+        verify(userMapper).insert(any(GuideUser.class));
+    }
+
+    @Test
+    void shouldReleasePendingIdentityWhenRejectingApplication() {
+        GuideUser pendingGuide = new GuideUser();
+        pendingGuide.setId(12L);
+        pendingGuide.setStatus(GuideUserService.STATUS_PENDING);
+        pendingGuide.setMobile("13800138000");
+        when(userMapper.selectOne(any())).thenReturn(pendingGuide);
+
+        service.releaseIdentityForRejectedApplication("13800138000");
+
+        verify(userMapper).releasePendingIdentity(12L);
     }
 
     @Test

--
Gitblit v1.7.1