<?php
namespace Tests\Unit;
use App\Models\AdminAction;
use App\Models\AdminRole;
use App\Models\AdminRoleAction;
use App\Services\AdminAuthService;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class AdminAuthTest extends TestCase
{
use RefreshDatabase;
public function testSetRoleActionsWhenEmpty()
{
$this->setRoles();
$adminAuthService = new AdminAuthService();
$roleId = 1;
$actionIds = '1,2,3,4,5';
$res = $adminAuthService->setActions($roleId, $actionIds);
$this->assertTrue($res);
$check = AdminRoleAction::query()->where('admin_role_id', $roleId)
->select('admin_action_uuid')
->get()->pluck('admin_action_uuid')->toArray();
$this->assertEquals(0, count(array_diff(explode(',', $actionIds), $check)));
}
public function testSetRoleActionsWhenSettedMore()
{
$this->setRoles();
AdminRoleAction::query()->create([
'admin_role_id' => 1,
'admin_action_uuid' => 6,
]);
AdminRoleAction::query()->create([
'admin_role_id' => 1,
'admin_action_uuid' => 7,
]);
$adminAuthService = new AdminAuthService();
$roleId = 1;
$actionIds = '1,2,3,4,5';
$res = $adminAuthService->setActions($roleId, $actionIds);
$this->assertTrue($res);
$check = AdminRoleAction::query()->where('admin_role_id', $roleId)->select('admin_action_uuid')
->get()->pluck('admin_action_uuid')->toArray();
$this->assertEquals(0, count(array_diff(explode(',', $actionIds), $check)));
}
public function testSetRoleActionsWhenSettedLess()
{
$this->setRoles();
AdminRoleAction::query()->create([
'admin_role_id' => 1,
'admin_action_uuid' => 2,
]);
AdminRoleAction::query()->create([
'admin_role_id' => 1,
'admin_action_uuid' => 3,
]);
$adminAuthService = new AdminAuthService();
$roleId = 1;
$actionIds = '1,2,3,4,5';
$res = $adminAuthService->setActions($roleId, $actionIds);
$this->assertTrue($res);
$check = AdminRoleAction::query()->where('admin_role_id', $roleId)->select('admin_action_uuid')
->get()->pluck('admin_action_uuid')->toArray();
$this->assertEquals(0, count(array_diff(explode(',', $actionIds), $check)));
}
private function setRoles()
{
for ($i = 0; $i < 10; ++$i) {
AdminAction::query()->create([
'action_name' => 'xxxcon@xxx',
'action_desc' => 'desc....',
'uuid' => $i + 1,
]);
AdminRole::query()->create([
'name' => 'name,,',
'desc' => 'xxx',
'remark' => 'remarkremark',
'code' => 'xxxx',
]);
}
}
}