Quelltext des aktuellen Standes
<?php
declare(strict_types=1);
use OpenNIT\AI\Actions\ActionRegistry;
return static function (): void {
test('Capability-Zuordnung', function () {
assertSame('manage_tickets', ActionRegistry::requiredCapability('create_ticket'));
assertSame('', ActionRegistry::requiredCapability('create_todo'), 'Todo = keine Capability');
assertSame(null, ActionRegistry::requiredCapability('unbekannt'), 'unbekannt → null');
});
test('exists / label', function () {
assertTrue(ActionRegistry::exists('create_order'));
assertFalse(ActionRegistry::exists('blubb'));
assertSame('Ticket anlegen', ActionRegistry::label('create_ticket'));
});
test('experimentelle Aktionen markiert', function () {
assertTrue(ActionRegistry::isExperimental('create_license'), 'create_license experimentell');
assertTrue(ActionRegistry::isExperimental('update_vm_status'), 'update_vm_status experimentell');
assertFalse(ActionRegistry::isExperimental('create_ticket'), 'create_ticket nicht experimentell');
// Doku-Seiten-Aktionen sind reguläre Aktionen, geschützt über edit_page.
assertFalse(ActionRegistry::isExperimental('create_page'), 'create_page regulär');
assertFalse(ActionRegistry::isExperimental('update_page'), 'update_page regulär');
});
test('unbekannte Aktion gilt nicht als experimentell', function () {
assertFalse(ActionRegistry::isExperimental('gibt_es_nicht'), 'unbekannt');
});
test('destruktive Erkennung', function () {
assertTrue(ActionRegistry::isDestructive('update_ticket', ['status' => 'closed']), 'Ticket schließen');
assertTrue(ActionRegistry::isDestructive('update_ticket', ['status' => 'solved']), 'Ticket solved');
assertFalse(ActionRegistry::isDestructive('update_ticket', ['status' => 'open']), 'offen = ok');
assertTrue(ActionRegistry::isDestructive('return_loan', []), 'Rückgabe destruktiv');
assertFalse(ActionRegistry::isDestructive('create_ticket', []), 'anlegen nicht destruktiv');
});
};