Add program picker relay status handling for wash start and update related tests
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -210,6 +210,19 @@ trait selfserve_lane_command_t
|
||||
}
|
||||
}
|
||||
|
||||
protected function setProgramPickerRelayStatusFromSelectedServiceForWashStart(): void
|
||||
{
|
||||
if (!$this->isRelayConfigured(selfserve_lane_relay::MACHINE_PROGRAM_PICKER)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$this->setMachineProgramPickerRelayStatusHard($this->isMachineServiceSelectedForWashStart());
|
||||
} catch (\Throwable) {
|
||||
// Best effort only; wash start must continue.
|
||||
}
|
||||
}
|
||||
|
||||
protected function isMachineWashSelectedAndAvailableForStart(): bool
|
||||
{
|
||||
if (!$this->isMachineServiceSelectedForWashStart()) {
|
||||
@@ -336,6 +349,7 @@ trait selfserve_lane_command_t
|
||||
protected function runRelaySideEffectsForWashStart(selfserve_lane_command_arguments $arguments): void
|
||||
{
|
||||
if ($arguments->defer_relay_side_effects) {
|
||||
$this->setProgramPickerRelayStatusFromSelectedServiceForWashStart();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -53,10 +53,16 @@ class SelfserveLaneStartEntranceTimeoutHarness
|
||||
$this->relayEvents[] = 'cleaner:on';
|
||||
}
|
||||
|
||||
protected function setProgramPickerRelayStatusFromSelectedServiceForWashStart(): void
|
||||
{
|
||||
$this->programPickerRelayCalls++;
|
||||
$this->relayEvents[] = 'program_picker:selected_service';
|
||||
}
|
||||
|
||||
protected function setProgramPickerRelayStatusForWashStart(): void
|
||||
{
|
||||
$this->programPickerRelayCalls++;
|
||||
$this->relayEvents[] = 'program_picker:sync';
|
||||
$this->relayEvents[] = 'program_picker:eligibility_sync';
|
||||
}
|
||||
|
||||
protected function setMachineRelayStatusForWashStart(): void
|
||||
@@ -109,15 +115,17 @@ it('parses deferred relay side effects on start command arguments', function ():
|
||||
expect($arguments->defer_relay_side_effects)->toBeTrue();
|
||||
});
|
||||
|
||||
it('skips relay side effects when start asks to defer machine side effects', function (): void {
|
||||
it('only syncs program picker from selected service when start asks to defer machine side effects', function (): void {
|
||||
$lane = new SelfserveLaneStartEntranceTimeoutHarness();
|
||||
|
||||
$lane->runStartRelaySideEffects(true);
|
||||
|
||||
expect($lane->cleanerRelayCalls)->toBe(0);
|
||||
expect($lane->programPickerRelayCalls)->toBe(0);
|
||||
expect($lane->programPickerRelayCalls)->toBe(1);
|
||||
expect($lane->machineRelayCalls)->toBe(0);
|
||||
expect($lane->relayEvents)->toBe([]);
|
||||
expect($lane->relayEvents)->toBe([
|
||||
'program_picker:selected_service',
|
||||
]);
|
||||
});
|
||||
|
||||
it('keeps cleaner, program picker and machine relay side effects in order for normal start commands', function (): void {
|
||||
@@ -130,7 +138,7 @@ it('keeps cleaner, program picker and machine relay side effects in order for no
|
||||
expect($lane->machineRelayCalls)->toBe(1);
|
||||
expect($lane->relayEvents)->toBe([
|
||||
'cleaner:on',
|
||||
'program_picker:sync',
|
||||
'program_picker:eligibility_sync',
|
||||
'machine:sync',
|
||||
]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user