fix(firstleg): hide void photo download paths
This commit is contained in:
+3
-1
@@ -42,7 +42,9 @@ class ContainerControllerContractTest {
|
||||
"/documents/{documentType}/{fileId}/download:", "ExceptionRequest",
|
||||
"enum: [DELIVERY_ORDER, PICKUP_ORDER]", "Idempotency-Key", "photoCounts:",
|
||||
"/pda/photos/{fileId}/download:", "downloadPath:", "workflowStatus:",
|
||||
"AWAITING_REVIEW", "version: {type: integer, minimum: 0}")
|
||||
"AWAITING_REVIEW", "version: {type: integer, minimum: 0}",
|
||||
"downloadPath: {type: string, nullable: true",
|
||||
"仅 ACTIVE 照片提供鉴权下载路径;VOID 历史照片为空")
|
||||
.doesNotContain("?containerNo", "containerNo in: query");
|
||||
}
|
||||
|
||||
|
||||
+25
-2
@@ -42,8 +42,11 @@ class ContainerOverviewServiceTest {
|
||||
when(mapper.itemCount(61L)).thenReturn(2);
|
||||
when(mapper.completedItemCount(61L)).thenReturn(2);
|
||||
when(mapper.unresolvedItemCount(61L)).thenReturn(0);
|
||||
when(mapper.photos(52L)).thenReturn(java.util.List.of(new ContainerOverviewMapper.PhotoRow(
|
||||
71L, 81L, 91L, "LOADING_DOOR_OPEN", 101L, "door.jpg", "ACTIVE", LocalDateTime.now())));
|
||||
when(mapper.photos(52L)).thenReturn(java.util.List.of(
|
||||
new ContainerOverviewMapper.PhotoRow(
|
||||
71L, 81L, 91L, "LOADING_DOOR_OPEN", 101L, "door.jpg", "ACTIVE", LocalDateTime.now()),
|
||||
new ContainerOverviewMapper.PhotoRow(
|
||||
72L, 81L, 91L, "LOADING_DOOR_OPEN", 102L, "void.jpg", "VOID", LocalDateTime.now())));
|
||||
when(mapper.documents(41L)).thenReturn(java.util.List.of());
|
||||
when(mapper.exceptions(41L)).thenReturn(java.util.List.of());
|
||||
when(mapper.transport(41L)).thenReturn(java.util.List.of());
|
||||
@@ -56,6 +59,13 @@ class ContainerOverviewServiceTest {
|
||||
assertThat(overview.pda().workflowStatus()).isEqualTo("AWAITING_REVIEW");
|
||||
assertThat(overview.pda().photos().get(0).downloadPath())
|
||||
.isEqualTo("/api/platform/v1/containers/41/pda/photos/101/download");
|
||||
assertThat(overview.pda().photos()).hasSize(2);
|
||||
assertThat(overview.pda().photos().get(1).status()).isEqualTo("VOID");
|
||||
assertThat(overview.pda().photos().get(1).downloadPath()).isNull();
|
||||
assertThat(overview.pda().photoCounts()).singleElement().satisfies(count -> {
|
||||
assertThat(count.evidenceType()).isEqualTo("LOADING_DOOR_OPEN");
|
||||
assertThat(count.count()).isEqualTo(1);
|
||||
});
|
||||
}
|
||||
|
||||
@Test void downloadsOnlyActivePhotoOwnedByContainerLoadingPlan() {
|
||||
@@ -87,6 +97,19 @@ class ContainerOverviewServiceTest {
|
||||
verifyNoInteractions(evidenceFiles);
|
||||
}
|
||||
|
||||
@Test void rejectsVoidedPhotoBeforeCallingFileService() {
|
||||
ContainerBookingEntity booking = new ContainerBookingEntity(); booking.setId(41L);
|
||||
when(containers.find(41L)).thenReturn(booking);
|
||||
when(mapper.pickTask(41L)).thenReturn(new ContainerOverviewMapper.PickTaskRow(
|
||||
61L, 52L, 41L, "LOADING", 7));
|
||||
when(mapper.photos(52L)).thenReturn(java.util.List.of(new ContainerOverviewMapper.PhotoRow(
|
||||
71L, 81L, 91L, "LOADING_DOOR_OPEN", 101L, "void.jpg", "VOID", LocalDateTime.now())));
|
||||
|
||||
assertThatThrownBy(() -> service.downloadPhoto(41L, 101L))
|
||||
.isInstanceOf(BizException.class).hasMessageContaining("不属于该货柜");
|
||||
verifyNoInteractions(evidenceFiles);
|
||||
}
|
||||
|
||||
@Test void markLocksContainerAndPersistsIdempotentImmutableHistory() {
|
||||
ContainerBookingEntity booking = new ContainerBookingEntity(); booking.setId(41L); booking.setVersion(3);
|
||||
when(containers.findForUpdate(41L)).thenReturn(booking);
|
||||
|
||||
Reference in New Issue
Block a user