Fix self-serve program picker wash type sync

This commit is contained in:
Jeppe Bundgaard
2026-06-09 11:59:42 +02:00
parent 07441c4ed1
commit a1224ec2f4
2 changed files with 19 additions and 4 deletions
@@ -217,7 +217,19 @@ trait selfserve_lane_command_t
}
try {
return (new selfserve_wash_flow())->isMachineAllowedToStartWash((int)$this->id);
$reg = method_exists($this, 'getLicensePlate') ? trim((string)$this->getLicensePlate()) : '';
if ($reg === '') {
return false;
}
$customerNumber = method_exists($this, 'getCustomerNumber') ? (int)$this->getCustomerNumber() : null;
$snapshot = (new selfserve_wash_flow())->previewVehicleEligibility(
(int)$this->id,
$reg,
$customerNumber !== null && $customerNumber > 0 ? $customerNumber : null
);
return (bool)($snapshot['allowed'] ?? false);
} catch (\Throwable) {
return false;
}
@@ -324,6 +336,7 @@ trait selfserve_lane_command_t
protected function runRelaySideEffectsForWashStart(selfserve_lane_command_arguments $arguments): void
{
if ($arguments->defer_relay_side_effects) {
$this->setProgramPickerRelayStatusForWashStart();
return;
}
@@ -109,15 +109,17 @@ it('parses deferred relay side effects on start command arguments', function ():
expect($arguments->defer_relay_side_effects)->toBeTrue();
});
it('skips cleaner, program picker and machine relay side effects when start asks to defer them', function (): void {
it('syncs only the program picker relay 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:sync',
]);
});
it('keeps cleaner, program picker and machine relay side effects in order for normal start commands', function (): void {