fix(dropship): project sealed carton identities into overseas receiving
This commit is contained in:
+38
@@ -273,6 +273,44 @@ class LoadingCompletedOutboxServiceTest {
|
||||
.doesNotContain("pallet.pallet_code");
|
||||
}
|
||||
|
||||
@org.junit.jupiter.params.ParameterizedTest
|
||||
@org.junit.jupiter.params.provider.ValueSource(booleans = {true, false})
|
||||
void freezesRepeatedSkuCartonsBySourceDetailForBothPalletSources(boolean actualBinding) throws Exception {
|
||||
Row first = row(11, 100, 101); first.setFulfillmentType("ONE_CLICK_DROPSHIP");
|
||||
first.setSkuCode("SAME-SKU"); first.setProductQuantity(10);
|
||||
Row second = row(11, 100, 102); second.setFulfillmentType("ONE_CLICK_DROPSHIP");
|
||||
second.setSkuCode("SAME-SKU"); second.setProductQuantity(20);
|
||||
when(snapshots.rows(90L)).thenReturn(List.of(second, first));
|
||||
if (actualBinding) {
|
||||
when(snapshots.workPalletCount(90L)).thenReturn(1);
|
||||
when(snapshots.actualPalletRows(90L)).thenReturn(List.of(
|
||||
actualPallet(11,100,"DP-260909-0001",102,"SAME-SKU","BOX-102"),
|
||||
actualPallet(11,100,"DP-260909-0001",101,"SAME-SKU","BOX-101")));
|
||||
} else {
|
||||
when(snapshots.palletRows(90L)).thenReturn(List.of(
|
||||
pallet(11,100,1,"DP-260909-0001",2,102,"SAME-SKU",1,20,"BOX-102"),
|
||||
pallet(11,100,1,"DP-260909-0001",2,101,"SAME-SKU",1,10,"BOX-101")));
|
||||
}
|
||||
service.publish(90L);
|
||||
service.publish(90L);
|
||||
ArgumentCaptor<InboundOutboxEntity> captor = ArgumentCaptor.forClass(InboundOutboxEntity.class);
|
||||
verify(outbox, org.mockito.Mockito.times(2)).insert(captor.capture());
|
||||
EventEnvelope event = mapper.readValue(captor.getAllValues().get(0).getPayloadJson(), EventEnvelope.class);
|
||||
var frozen = event.payload().at("/orders/0/pallets/0/skuPackages");
|
||||
assertThat(frozen).hasSize(2);
|
||||
for (var sku : frozen) {
|
||||
String detail = sku.path("sourceInboundDetailId").asText();
|
||||
assertThat(detail).isIn("101", "102");
|
||||
assertThat(sku.path("skuCode").asText()).isEqualTo("SAME-SKU");
|
||||
assertThat(sku.path("cartonMarks")).hasSize(1);
|
||||
assertThat(sku.path("cartonMarks").get(0).asText()).isEqualTo("BOX-" + detail);
|
||||
assertThat(sku.path("productQuantity").asInt()).isEqualTo("101".equals(detail) ? 10 : 20);
|
||||
}
|
||||
assertThat(frozen.get(0).path("sourceInboundDetailId"))
|
||||
.isNotEqualTo(frozen.get(1).path("sourceInboundDetailId"));
|
||||
assertThat(captor.getAllValues().get(0).getPayloadHash()).isEqualTo(captor.getAllValues().get(1).getPayloadHash());
|
||||
}
|
||||
|
||||
@Test void publishesDropshipPalletSkuAndCartonSnapshots() throws Exception {
|
||||
Row first = row(11, 100, 101); first.setFulfillmentType("ONE_CLICK_DROPSHIP");
|
||||
first.setPackageCount(2); first.setProductQuantity(20); first.setSkuCode("SKU-A");
|
||||
|
||||
Reference in New Issue
Block a user