fix: isolate legacy from shadow admission errors
This commit is contained in:
@@ -93,6 +93,20 @@ class ToWmsServiceImplShadowTest {
|
||||
verify(mydoJobMapper, times(1)).allotInJobSpace(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shadowErrorCannotSkipOrReplaceLegacyAllocation() {
|
||||
AssertionError shadowFailure = new AssertionError("shadow fatal failure");
|
||||
prepareSuccessfulLegacyAllocation();
|
||||
when(shadowObservationGateway.observeInbound("TASK-1", "TRAY-1"))
|
||||
.thenThrow(shadowFailure);
|
||||
|
||||
AjaxResult result = service.requestEnterByTaskNo(request);
|
||||
|
||||
assertThat(result.get(AjaxResult.DATA_TAG)).isSameAs(legacyResult);
|
||||
verify(shadowObservationGateway).observeInbound("TASK-1", "TRAY-1");
|
||||
verify(mydoJobMapper, times(1)).allotInJobSpace(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void legacyWarningCompletesShadowAndPreservesLegacyResponse() {
|
||||
when(shadowObservationGateway.observeInbound("TASK-1", "TRAY-1"))
|
||||
|
||||
@@ -97,6 +97,27 @@ class OutStockoutServiceImplShadowTest {
|
||||
verify(outStockoutMapper, times(1)).autoAllot(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shadowErrorStillRunsAutoAllotAndPreservesLegacySuccess() {
|
||||
AssertionError shadowFailure = new AssertionError("shadow fatal failure");
|
||||
prepareAutoAllot();
|
||||
when(shadowObservationGateway.observeProjectOutbound("DETAIL-1"))
|
||||
.thenThrow(shadowFailure);
|
||||
doAnswer(invocation -> {
|
||||
@SuppressWarnings("unchecked")
|
||||
HashMap<String, String> parameters = invocation.getArgument(0);
|
||||
parameters.put("v_result", "10");
|
||||
parameters.put("v_resultmsg", "ok");
|
||||
return null;
|
||||
}).when(outStockoutMapper).autoAllot(any());
|
||||
|
||||
AjaxResult result = service.autoAllot("OUT-1");
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
verify(shadowObservationGateway).observeProjectOutbound("DETAIL-1");
|
||||
verify(outStockoutMapper, times(1)).autoAllot(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void autoAllotLegacyExceptionClosesShadowActivityAndEscapesUnchanged() {
|
||||
IllegalStateException legacyFailure = new IllegalStateException("legacy database failure");
|
||||
@@ -139,6 +160,26 @@ class OutStockoutServiceImplShadowTest {
|
||||
verify(secondCompletion).complete("10");
|
||||
}
|
||||
|
||||
@Test
|
||||
void shadowErrorStillRunsManualAllotOnce() {
|
||||
AssertionError shadowFailure = new AssertionError("shadow fatal failure");
|
||||
when(shadowObservationGateway.observeExactStockOutbound("DETAIL-1", "STOCK-1"))
|
||||
.thenThrow(shadowFailure);
|
||||
doAnswer(invocation -> {
|
||||
@SuppressWarnings("unchecked")
|
||||
HashMap<String, String> parameters = invocation.getArgument(0);
|
||||
parameters.put("v_result", "10");
|
||||
parameters.put("v_resultString", "ok");
|
||||
return null;
|
||||
}).when(outStockoutMapper).manualAllot(any());
|
||||
|
||||
AjaxResult result = service.manualAllot(new String[]{"STOCK-1"}, "DETAIL-1");
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
verify(shadowObservationGateway).observeExactStockOutbound("DETAIL-1", "STOCK-1");
|
||||
verify(outStockoutMapper, times(1)).manualAllot(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void manualAllotLegacyErrorClosesShadowActivityAndEscapesUnchanged() {
|
||||
AssertionError legacyFailure = new AssertionError("legacy fatal failure");
|
||||
|
||||
Reference in New Issue
Block a user