<?php

namespace Tests\Unit;

use App\Models\UserSession;
use App\Services\SessionInvalidator;
use App\Services\UserSessionService;
use Mockery;
use Tests\TestCase;

class UserSessionServiceTest extends TestCase
{
    protected function tearDown(): void
    {
        Mockery::close();
        parent::tearDown();
    }

    public function test_revoke_invalidates_server_session_and_deletes_record(): void
    {
        $invalidator = Mockery::mock(SessionInvalidator::class);
        $invalidator->shouldReceive('invalidate')
            ->once()
            ->with('sess-abc-123');

        $session = Mockery::mock(UserSession::class)->makePartial();
        $session->session_id = 'sess-abc-123';
        $session->shouldReceive('delete')->once();

        $service = new UserSessionService($invalidator);
        $service->revoke($session);
    }
}
