.basicFlow()
.step(HANDLES_PROCESS_ORDER_START_EVENT).on(process_order_start_event).systemPublish(start_process_order)
.step(HANDLES_ORDER_STATUS).system(handles_order_status)
.step(HANDLES_EMPLOYMENT_STATUS).system(handles_employment_status)
.step(HANDLES_PERSONAL_PENSION_ORDER_TYPE).system(handles_personal_pension_order_type)
.step(HANDLES_VALIDATE_CEDING_PROVIDERS).inCase(is_personal_pension_transfer).systemPublish(validates_ceding_providers)
.step(HANDLES_GCD_VALIDATION).systemPublish(validates_gcd)
.step("HANDLES_VALIDATE_AML").system(stop)
.flow(RUFUS_CHECK).after(HANDLES_PERSONAL_PENSION_ORDER_TYPE).condition(is_isa_product)
.step(HANDLES_CHECK_RUFUS_STATUS).systemPublish(rufus_check_start).to(rufus_flow)
.step(HANDLES_RUFUS_CHECK_SUCCESS).on(rufus_check_success).continuesAt(HANDLES_GCD_VALIDATION)
.flow(CEDING_PROVIDERS_VALIDATION_FAILED)
.step(HANDLES_CEDING_PROVIDERS_VALIDATION_FAILED).on(ceding_providers_validation_failed).systemPublish(respond_ceding_providers_failure_E104)
.flow(PUBLISH_RESPONSE).anytime()
.step(HANDLES_PUBLISH_RESPONSE).on(publish_response).systemPublish(response)
.flow(PROCESS_ORDER_EXCEPTION).anytime()
.step(HANDLES_PROCESS_ORDER_EXCEPTION).on(process_order_exception).system(stop_on_exception)
.build();
//@formatter:on
@Test
public void HANDLES_CEDING_PROVIDERS_VALIDATION_FAILED_respond_ceding_providers_failure_E104() {
// GIVEN
final PublishResponseEvent publishResponseEvent = of(new ResponseEntity<>(response, OK));
given(cedingProvidersValidationStep.isPersonalPensionTransfer()).willReturn(true);
given(cedingProvidersValidationStep.validateCedingProviders()).willReturn(cedingProvidersValidationFailed);
given(cedingProvidersValidationStep.respondCedingProvidersFailureE104())
.willReturn(publishResponseEvent);
givenFlowWillStopAt(PUBLISH_RESPONSE);
// WHEN
modelRunner.reactTo(processOrderRequest);
// THEN
assertRecordedStepNames(HANDLES_PROCESS_ORDER_START_EVENT,
HANDLES_ORDER_STATUS,
HANDLES_EMPLOYMENT_STATUS,
HANDLES_PERSONAL_PENSION_ORDER_TYPE,
HANDLES_VALIDATE_CEDING_PROVIDERS,
HANDLES_CEDING_PROVIDERS_VALIDATION_FAILED,
HANDLES_PUBLISH_RESPONSE);
}