feat: add permission to reopen closed jobcards

This commit is contained in:
Marco0300
2026-09-01 23:42:42 +02:00
parent 67fcfd6b8f
commit 8d46ef6a56
5 changed files with 13 additions and 5 deletions
+7 -3
View File
@@ -5,10 +5,14 @@ $root = dirname(__DIR__);
$schema = file_get_contents($root . '/database/schema.sql');
$upgrade = file_get_contents($root . '/database/upgrade.sql');
$front = file_get_contents($root . '/public/index.php');
if ($schema === false || $upgrade === false || $front === false) throw new RuntimeException('Fixtures must be readable.');
$validator = file_get_contents($root . '/app/Domain/Jobcard/StatusTransitionValidator.php');
if ($schema === false || $upgrade === false || $front === false || $validator === false) throw new RuntimeException('Fixtures must be readable.');
function jobcard_feature_assert(bool $ok, string $message): void { if (!$ok) throw new RuntimeException($message); }
jobcard_feature_assert(str_contains($schema, "('jobcards.close', 'Close jobcards')"), 'Fresh schema must seed jobcards.close.');
jobcard_feature_assert(str_contains($upgrade, "('jobcards.close', 'Close jobcards')"), 'Upgrade must seed jobcards.close.');
jobcard_feature_assert(str_contains($schema, "('jobcards.reopen', 'Reopen closed jobcards')"), 'Fresh schema must seed jobcards.reopen.');
jobcard_feature_assert(str_contains($upgrade, "('jobcards.reopen', 'Reopen closed jobcards')"), 'Upgrade must seed jobcards.reopen.');
jobcard_feature_assert(str_contains($front, "if (\$locked['status'] === 'closed' && \$to !== 'closed') require_permission('jobcards.reopen');"), 'Reopening must require jobcards.reopen.');
jobcard_feature_assert(str_contains($validator, "'closed' => ['in_progress']"), 'Closed jobcards must support reopening to in progress.');
jobcard_feature_assert(str_contains($front, "if (\$to === 'closed') require_permission('jobcards.close');"), 'Closing a jobcard must require jobcards.close.');
jobcard_feature_assert(str_contains($front, "name=\"q\"") && str_contains($front, "name=\"status_filter\""), 'Jobcards page must expose search and status filters.');
jobcard_feature_assert(str_contains($front, "j.status <> 'closed'"), 'Default Jobcards filter must exclude closed records.');