130 lines
8.1 KiB
PHP
130 lines
8.1 KiB
PHP
<?php
|
|
|
|
it('wires self-serve machine types, eligibility, summaries, and machine-start webhook routes', function (): void {
|
|
$machineTypesRoute = file_get_contents(app_path('routes/departmentSelfserveMachineTypesRoute.php'));
|
|
$vehicleConditionsRoute = file_get_contents(app_path('routes/departmentSelfserveVehicleConditionsRoute.php'));
|
|
$webhookRoute = file_get_contents(app_path('routes/machineButtonPressRoute.php'));
|
|
|
|
expect($machineTypesRoute)->not->toBeFalse();
|
|
expect($machineTypesRoute)->toContain('/department/selfserve/machine-types');
|
|
|
|
expect($vehicleConditionsRoute)->not->toBeFalse();
|
|
expect($vehicleConditionsRoute)->toContain('/department/selfserve/vehicle/allowed');
|
|
expect($vehicleConditionsRoute)->toContain('/department/selfserve/washes/summary');
|
|
expect($vehicleConditionsRoute)->toContain('synchronizeSession');
|
|
|
|
expect($webhookRoute)->not->toBeFalse();
|
|
expect($webhookRoute)->toContain('/relay/button/press/post');
|
|
expect($webhookRoute)->toContain('recordMachineStartWebhook');
|
|
});
|
|
|
|
it('keeps machine type support wired into lanes, tasks, and conditions routes', function (): void {
|
|
$lanesRoute = file_get_contents(app_path('routes/departmentLanesRoute.php'));
|
|
$tasksRoute = file_get_contents(app_path('routes/departmentSelfserveTasksRoute.php'));
|
|
$conditionsRoute = file_get_contents(app_path('routes/departmentSelfserveConditionsRoute.php'));
|
|
$questionsRoute = file_get_contents(app_path('routes/departmentSelfserveQuestionsRoute.php'));
|
|
|
|
expect($lanesRoute)->toContain('machine_type_id');
|
|
expect($tasksRoute)->toContain('machine_type_id');
|
|
expect($conditionsRoute)->toContain('machine_type_id');
|
|
expect($questionsRoute)->toContain('department') // shared questions still use the legacy columns with default 0 scope
|
|
->toContain('lane')
|
|
->toContain('product');
|
|
});
|
|
|
|
it('wires self-serve config draft/publish/rollback lifecycle endpoints', function (): void {
|
|
$configRoute = file_get_contents(app_path('routes/departmentSelfserveConfigVersionsRoute.php'));
|
|
|
|
expect($configRoute)->not->toBeFalse();
|
|
expect($configRoute)->toContain('/department/selfserve/config/versions');
|
|
expect($configRoute)->toContain('/department/selfserve/config/history');
|
|
expect($configRoute)->toContain('/department/selfserve/config/active');
|
|
expect($configRoute)->toContain('/department/selfserve/config/draft');
|
|
expect($configRoute)->toContain('/department/selfserve/config/validate');
|
|
expect($configRoute)->toContain('/department/selfserve/config/publish');
|
|
expect($configRoute)->toContain('/department/selfserve/config/rollback');
|
|
expect($configRoute)->toContain('publish_department_selfserve_config_versions');
|
|
expect($configRoute)->toContain('rollback_department_selfserve_config_versions');
|
|
});
|
|
|
|
it('keeps legacy self-serve CRUD routes syncing canonical drafts', function (): void {
|
|
$questionsRoute = file_get_contents(app_path('routes/departmentSelfserveQuestionsRoute.php'));
|
|
$conditionsRoute = file_get_contents(app_path('routes/departmentSelfserveConditionsRoute.php'));
|
|
$rulesRoute = file_get_contents(app_path('routes/departmentSelfserveConditionRulesRoute.php'));
|
|
$tasksRoute = file_get_contents(app_path('routes/departmentSelfserveTasksRoute.php'));
|
|
|
|
expect($questionsRoute)->toContain('syncDraftFromLegacyForDepartment');
|
|
expect($conditionsRoute)->toContain('syncDraftFromLegacyForDepartment');
|
|
expect($rulesRoute)->toContain('syncDraftFromLegacyForDepartment');
|
|
expect($tasksRoute)->toContain('syncDraftFromLegacyForDepartment');
|
|
});
|
|
|
|
it('wires machine relay status get and set endpoints', function (): void {
|
|
$moduleSelfServeRoute = file_get_contents(app_path('routes/moduleSelfServeRoute.php'));
|
|
|
|
expect($moduleSelfServeRoute)->not->toBeFalse();
|
|
expect($moduleSelfServeRoute)->toContain('/modules/self-serve/lane/relay/machine/status');
|
|
expect($moduleSelfServeRoute)->toContain('/modules/self-serve/lane/relay/machine/set');
|
|
expect($moduleSelfServeRoute)->toContain('/modules/self-serve/lane/relay/machine_program_picker/status');
|
|
expect($moduleSelfServeRoute)->toContain('/modules/self-serve/lane/relay/machine_program_picker/set');
|
|
expect($moduleSelfServeRoute)->toContain('/modules/self-serve/lane/relay/machine_cleaner/status');
|
|
expect($moduleSelfServeRoute)->toContain('/modules/self-serve/lane/relay/machine_cleaner/set');
|
|
expect($moduleSelfServeRoute)->toContain('getMachineRelayStatus');
|
|
expect($moduleSelfServeRoute)->toContain('setMachineRelayStatus');
|
|
expect($moduleSelfServeRoute)->toContain('getMachineProgramPickerRelayStatus');
|
|
expect($moduleSelfServeRoute)->toContain('setMachineProgramPickerRelayStatus');
|
|
expect($moduleSelfServeRoute)->toContain('getMachineCleanerRelayStatus');
|
|
expect($moduleSelfServeRoute)->toContain('setMachineCleanerRelayStatus');
|
|
expect($moduleSelfServeRoute)->toContain('setMachineCleanerRelayStatusHard(true)');
|
|
});
|
|
|
|
it('wires self-serve lane gate open endpoint', function (): void {
|
|
$moduleSelfServeRoute = file_get_contents(app_path('routes/moduleSelfServeRoute.php'));
|
|
|
|
expect($moduleSelfServeRoute)->not->toBeFalse();
|
|
expect($moduleSelfServeRoute)->toContain('/modules/self-serve/lane/gate/open');
|
|
expect($moduleSelfServeRoute)->toContain('modules_selfserve_lane_gate_open');
|
|
expect($moduleSelfServeRoute)->toContain('selfserve_lane_port::ENTRANCE');
|
|
expect($moduleSelfServeRoute)->toContain('selfserve_lane_port::EXIT');
|
|
expect($moduleSelfServeRoute)->toContain('$lane->open($gate)');
|
|
});
|
|
|
|
it('wires in-progress self-serve wash details endpoint', function (): void {
|
|
$moduleSelfServeRoute = file_get_contents(app_path('routes/moduleSelfServeRoute.php'));
|
|
|
|
expect($moduleSelfServeRoute)->not->toBeFalse();
|
|
expect($moduleSelfServeRoute)->toContain('/modules/self-serve/lane/wash/in-progress');
|
|
expect($moduleSelfServeRoute)->toContain('modules_selfserve_lane_wash_in_progress_view');
|
|
expect($moduleSelfServeRoute)->toContain("'in_progress' => true");
|
|
expect($moduleSelfServeRoute)->toContain("'in_progress' => false");
|
|
expect($moduleSelfServeRoute)->toContain('selfserve_lane_status::OCCUPIED');
|
|
expect($moduleSelfServeRoute)->toContain('selfserve_lane_state::IN_WASH');
|
|
expect($moduleSelfServeRoute)->toContain('getWashStartTime');
|
|
expect($moduleSelfServeRoute)->toContain("'included_minutes' =>");
|
|
expect($moduleSelfServeRoute)->toContain("'machine_relay_enabled' =>");
|
|
expect($moduleSelfServeRoute)->toContain("'machine_relay_enabled_at' =>");
|
|
expect($moduleSelfServeRoute)->toContain("'wash_started_at' =>");
|
|
});
|
|
|
|
it('wires vehicle type override into self-serve preview and synchronization routes', function (): void {
|
|
$vehicleConditionsRoute = file_get_contents(app_path('routes/departmentSelfserveVehicleConditionsRoute.php'));
|
|
$washFlow = file_get_contents(app_path('modules/selfserve/classes/selfserve_wash_flow.php'));
|
|
|
|
expect($vehicleConditionsRoute)->not->toBeFalse();
|
|
expect($vehicleConditionsRoute)->toContain('vehicle_type_id');
|
|
expect($vehicleConditionsRoute)->toContain('vehicle_type');
|
|
expect($vehicleConditionsRoute)->toContain('resolveVehicleTypeIdFromQuery');
|
|
expect($vehicleConditionsRoute)->toContain('resolveVehicleTypeIdFromRequest');
|
|
expect($vehicleConditionsRoute)->toContain('normalizeVehicleTypeOverride');
|
|
expect($vehicleConditionsRoute)->toContain('shouldRefreshSummaryForVehicleType');
|
|
expect($vehicleConditionsRoute)->toContain('previewVehicleEligibility($lane_id, $reg, $customer_number, $vehicle_type_id)');
|
|
expect($vehicleConditionsRoute)->toContain('synchronizeSession($lane_id, $reg, $customer_number, false, $vehicle_type_id)');
|
|
expect($vehicleConditionsRoute)->toContain('synchronizeSession($lane, $reg, $customer_id, true, $vehicle_type_id)');
|
|
|
|
expect($washFlow)->not->toBeFalse();
|
|
expect($washFlow)->toContain('resolveVehicleTypeId($vehicle, $vehicleTypeIdOverride)');
|
|
expect($washFlow)->toContain("'vehicle_type_id' => \$snapshot['vehicle_type_id']");
|
|
expect($washFlow)->toContain("\$session->vehicle_type_id->set(\$snapshot['vehicle_type_id']);");
|
|
expect($washFlow)->toContain("\$session->vehicle_id->set(\$snapshot['vehicle']['id'] ?? null);");
|
|
});
|