/
Roles.php
101 lines (82 loc) · 2.97 KB
/
Roles.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
declare(strict_types=1);
/*
* This file is part of the QuidPHP package <https://quidphp.com>
* Author: Pierre-Philippe Emond <emondpph@gmail.com>
* License: https://github.com/quidphp/main/blob/master/LICENSE
*/
namespace Quid\Test\Main;
use Quid\Base;
use Quid\Main;
// roles
// class for testing Quid\Main\Roles
class Roles extends Base\Test
{
// trigger
final public static function trigger(array $data):bool
{
// prepare
$roles = new Main\Roles();
$admin = new Main\Role('admin',80,['admin'=>true]);
$nobody = new Main\Role('nobody',1,['nobody'=>true]);
$test = new Main\Role('test',20);
$rolesIs = new Main\Roles();
$rolesIs->add($admin,$nobody,$test);
// construct
// onPrepareKey
// onPrepareValue
// _cast
assert($rolesIs->_cast() === [80,1,20]);
// toSet
assert($rolesIs->toSet() === [80,1,20]);
// isOne
assert($rolesIs->isOne('admin'));
// isAll
assert(!$rolesIs->isAll('admin'));
// isNobody
assert(!$rolesIs->isNobody());
assert($nobody->roles()->isNobody());
// isSomebody
assert($rolesIs->isSomebody());
assert(!$nobody->roles()->isSomebody());
// findByName
assert($rolesIs->findByName('admin')->name() === 'admin');
// add
$roles->add($admin,$nobody,$test);
assert($roles->isCount(3));
// nobody
assert($roles->nobody() === $nobody);
// main
assert($roles->main() === $admin);
// makeFromArray
$roles2 = Main\Roles::makeFromArray(['ok'=>25,'james'=>[21,['shared'=>true]]]);
assert(current($roles2->keys()) === 25);
$ok = $roles2->get(25);
assert($ok->name() === 'ok');
assert($roles2->first()->permission() === 25);
assert($roles2->sortDefault()->first()->permission() === 21);
// map
assert($roles->get('admin') === $admin);
assert($roles->get('admiz') === null);
assert($roles->get(80) === $admin);
assert($roles->get($admin) === $admin);
assert(!$roles->in($ok));
assert($roles->in($admin));
assert(!$roles->in(2));
assert(!$roles->exists($ok));
assert($roles->exists($admin));
assert($roles->exists(80));
assert($roles->pair('name')[1] === 'nobody');
assert(count($roles->group('name')) === 3);
assert($roles->sortBy('permission',false) !== $roles);
assert($roles->sortBy('permission',false)->first()->permission() === 80);
assert($roles->filterReject(1) !== $roles);
assert($roles->filterReject(1)->isCount(2));
assert($roles->filterReject($roles)->isEmpty());
assert($roles->filter(fn($role) => $role->permission() === 80) !== $roles);
assert($roles->filter(fn($role) => $role->permission() === 80)->isCount(1));
assert($roles->add($roles2)->isCount(5));
return true;
}
}
?>