shinnosuke
2026-08-24 746599f462f3c776732cb277355ffe5eb1124564
talent-card-server/src/test/java/com/talentcard/server/service/DependentCardApplyServiceTests.java
@@ -59,7 +59,7 @@
   }
   @Test
   void resubmitCreatesANewApplicationAndKeepsRejectedApplicationUnchanged() {
   void resubmitUpdatesTheRejectedApplicationInsteadOfCreatingADuplicate() {
      DependentCardApply rejected = new DependentCardApply(
            "DCA-OLD",
            12L,
@@ -73,12 +73,18 @@
            "510105199001011234",
            "配偶"
      );
      setId(rejected, 99L);
      setStatus(rejected, DependentCardApply.STATUS_REJECTED);
      when(mapper.selectByIdForUpdate(99L)).thenReturn(rejected);
      when(mapper.insert(any(DependentCardApply.class))).thenAnswer(invocation -> {
         setId(invocation.getArgument(0), 100L);
      when(mapper.update(any(), any(Wrapper.class))).thenAnswer(invocation -> {
         setStatus(rejected, DependentCardApply.STATUS_PENDING_REVIEW);
         setField(rejected, "dependentName", "新家属");
         setField(rejected, "dependentIdCardNo", "51010519900101123X");
         setField(rejected, "dependentMobile", "13700000000");
         setField(rejected, "relation", "子女");
         return 1;
      });
      when(mapper.selectById(99L)).thenReturn(rejected);
      when(statusLogMapper.insert(any(DependentCardApplyStatusLog.class))).thenReturn(1);
      DependentCardApplyItemResponse result = service.resubmit(
@@ -92,28 +98,18 @@
            )
      );
      ArgumentCaptor<DependentCardApply> applicationCaptor = ArgumentCaptor.forClass(DependentCardApply.class);
      verify(mapper).insert(applicationCaptor.capture());
      DependentCardApply created = applicationCaptor.getValue();
      assertThat(created.getId()).isEqualTo(100L);
      assertThat(created.getApplyNo()).startsWith("DCA").isNotEqualTo(rejected.getApplyNo());
      assertThat(created.getTalentId()).isEqualTo(rejected.getTalentId());
      assertThat(created.getTalentCardId()).isEqualTo(rejected.getTalentCardId());
      assertThat(created.getDependentName()).isEqualTo("新家属");
      assertThat(created.getDependentIdCardNo()).isEqualTo("51010519900101123X");
      assertThat(created.getDependentMobile()).isEqualTo("13700000000");
      assertThat(created.getRelation()).isEqualTo("子女");
      assertThat(created.getStatus()).isEqualTo(DependentCardApply.STATUS_PENDING_REVIEW);
      assertThat(result.id()).isEqualTo(100L);
      verify(mapper, never()).insert(any(DependentCardApply.class));
      verify(mapper).update(any(), any(Wrapper.class));
      assertThat(result.id()).isEqualTo(99L);
      assertThat(result.status()).isEqualTo(DependentCardApply.STATUS_PENDING_REVIEW);
      assertThat(rejected.getStatus()).isEqualTo(DependentCardApply.STATUS_REJECTED);
      verify(mapper, never()).update(any(), any(Wrapper.class));
      assertThat(result.statusText()).isEqualTo("待审核");
      assertThat(rejected.getApplyNo()).isEqualTo("DCA-OLD");
      ArgumentCaptor<DependentCardApplyStatusLog> logCaptor = ArgumentCaptor.forClass(DependentCardApplyStatusLog.class);
      verify(statusLogMapper).insert(logCaptor.capture());
      assertThat(logCaptor.getValue().getApplyId()).isEqualTo(100L);
      assertThat(logCaptor.getValue().getApplyNo()).isEqualTo(created.getApplyNo());
      assertThat(logCaptor.getValue().getFromStatus()).isNull();
      assertThat(logCaptor.getValue().getApplyId()).isEqualTo(99L);
      assertThat(logCaptor.getValue().getApplyNo()).isEqualTo(rejected.getApplyNo());
      assertThat(logCaptor.getValue().getFromStatus()).isEqualTo(DependentCardApply.STATUS_REJECTED);
      assertThat(logCaptor.getValue().getToStatus()).isEqualTo(DependentCardApply.STATUS_PENDING_REVIEW);
   }