Fix self-serve relay sync to enforce lane safety guards

This commit is contained in:
Jeppe B
2026-06-01 22:19:34 +02:00
parent 416eba7de5
commit 64beb38bae
2 changed files with 12 additions and 12 deletions
@@ -514,26 +514,26 @@ class departmentsRoute
if ($enabled) {
// Self-serve enabled: keep machine stack off.
$this->setOptionalLaneRelayState($lane, 'relay_machine_program_picker_id', static function () use ($lane): void {
$lane->setMachineProgramPickerRelayStatusHard(false);
$lane->setMachineProgramPickerRelayStatus(false);
});
$this->setOptionalLaneRelayState($lane, 'relay_machine_cleaner_id', static function () use ($lane): void {
$lane->setMachineCleanerRelayStatusHard(false);
$lane->setMachineCleanerRelayStatus(false);
});
try {
$lane->setMachineRelayStatusHard(false);
$lane->setMachineRelayStatus(false);
} catch (\Throwable) {}
continue;
}
// Self-serve disabled: restore machine stack on.
$this->setOptionalLaneRelayState($lane, 'relay_machine_cleaner_id', static function () use ($lane): void {
$lane->setMachineCleanerRelayStatusHard(true);
$lane->setMachineCleanerRelayStatus(true);
});
try {
$lane->setMachineRelayStatusHard(true);
$lane->setMachineRelayStatus(true);
} catch (\Throwable) {}
$this->setOptionalLaneRelayState($lane, 'relay_machine_program_picker_id', static function () use ($lane): void {
$lane->setMachineProgramPickerRelayStatusHard(true);
$lane->setMachineProgramPickerRelayStatus(true);
});
}
}
@@ -6,10 +6,10 @@ it('syncs lane relay states when department self-serve enabled flag changes', fu
expect($routeContent)->not->toBeFalse();
expect($routeContent)->toContain('/departments/self-serve/enabled');
expect($routeContent)->toContain('$this->syncDepartmentSelfServeRelayStates((int)$department->id, $enabled);');
expect($routeContent)->toContain('setMachineProgramPickerRelayStatusHard(false)');
expect($routeContent)->toContain('setMachineCleanerRelayStatusHard(false)');
expect($routeContent)->toContain('setMachineRelayStatusHard(false)');
expect($routeContent)->toContain('setMachineCleanerRelayStatusHard(true)');
expect($routeContent)->toContain('setMachineRelayStatusHard(true)');
expect($routeContent)->toContain('setMachineProgramPickerRelayStatusHard(true)');
expect($routeContent)->toContain('setMachineProgramPickerRelayStatus(false)');
expect($routeContent)->toContain('setMachineCleanerRelayStatus(false)');
expect($routeContent)->toContain('setMachineRelayStatus(false)');
expect($routeContent)->toContain('setMachineCleanerRelayStatus(true)');
expect($routeContent)->toContain('setMachineRelayStatus(true)');
expect($routeContent)->toContain('setMachineProgramPickerRelayStatus(true)');
});