| | |
| | | } |
| | | |
| | | @Test |
| | | void resubmitCreatesANewApplicationAndKeepsRejectedApplicationUnchanged() { |
| | | void resubmitUpdatesTheRejectedApplicationInsteadOfCreatingADuplicate() { |
| | | DependentCardApply rejected = new DependentCardApply( |
| | | "DCA-OLD", |
| | | 12L, |
| | |
| | | "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( |
| | |
| | | ) |
| | | ); |
| | | |
| | | 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); |
| | | } |
| | | |