<?php

namespace Tests\Unit\Services\Auth;

use App\Services\Auth\PermissionCheckService;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\DB;
use Tests\TestCase;

class PermissionCheckServiceTest extends TestCase
{
    use RefreshDatabase;

    public function test_has_permission_returns_true_when_assigned(): void
    {
        $permissionId = DB::table('permissions')->insertGetId([
            'name' => 'edit_students',
            'description' => 'Edit students',
        ]);

        $roleId = DB::table('roles')->insertGetId([
            'name' => 'admin',
            'priority' => 1,
        ]);

        DB::table('user_roles')->insert([
            'user_id' => 10,
            'role_id' => $roleId,
        ]);

        DB::table('role_permissions')->insert([
            'role_id' => $roleId,
            'permission_id' => $permissionId,
            'can_read' => 1,
        ]);

        $service = new PermissionCheckService();

        $this->assertTrue($service->hasPermission(10, 'edit_students'));
        $this->assertFalse($service->hasPermission(10, 'missing_perm'));
    }
}
