OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

ActionRegistryTest.php

2 KB
<?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');
    });
};