Files
ppeasy_vg12/tests/Unit/Rules/ValidPermissionNameTest.php
T
2026-10-09 08:21:06 +02:00

63 lines
1.5 KiB
PHP

<?php
use App\Rules\ValidPermissionName;
test('passes for valid names', function (string $name) {
$rule = new ValidPermissionName;
$this->assertTrue($rule->passes('name', $name));
})->with('validNames');
test('fails for invalid names', function (mixed $name) {
$rule = new ValidPermissionName;
$this->assertFalse($rule->passes('name', $name));
})->with('invalidNames');
test('validate calls fail with translated message when invalid', function () {
$rule = new ValidPermissionName;
$messages = [];
$rule->validate('name', 'has space', function ($msg) use (&$messages) {
$messages[] = $msg;
});
$this->assertNotEmpty($messages);
});
test('validate does not call fail when valid', function () {
$rule = new ValidPermissionName;
$called = false;
$rule->validate('name', 'users.manage', function () use (&$called) {
$called = true;
});
$this->assertFalse($called);
});
test('to string returns regex form', function () {
$rule = new ValidPermissionName;
$this->assertStringStartsWith('regex:', (string) $rule);
});
dataset('validNames', function () {
return [
'alphanumeric' => ['users123'],
'dot-separated' => ['users.manage'],
'underscore' => ['users_manage'],
'hyphen' => ['users-manage'],
'numeric string' => ['12345'],
];
});
dataset('invalidNames', function () {
return [
'space' => ['has space'],
'special char' => ['users@manage'],
'slash' => ['users/manage'],
'array' => [['users.manage']],
];
});