php-agentic/tests/Feature/Livewire/DashboardTest.php

103 lines
2.6 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
namespace Core\Mod\Agentic\Tests\Feature\Livewire;
use Core\Mod\Agentic\View\Modal\Admin\Dashboard;
use Livewire\Livewire;
use Symfony\Component\HttpKernel\Exception\HttpException;
class DashboardTest extends LivewireTestCase
{
public function test_requires_hades_access(): void
{
$this->expectException(HttpException::class);
Livewire::test(Dashboard::class);
}
public function test_unauthenticated_user_cannot_access(): void
{
$this->expectException(HttpException::class);
Livewire::test(Dashboard::class);
}
public function test_renders_successfully_with_hades_user(): void
{
$this->actingAsHades();
Livewire::test(Dashboard::class)
->assertOk();
}
public function test_refresh_dispatches_notify_event(): void
{
$this->actingAsHades();
Livewire::test(Dashboard::class)
->call('refresh')
->assertDispatched('notify');
}
public function test_has_correct_initial_properties(): void
{
$this->actingAsHades();
$component = Livewire::test(Dashboard::class);
$component->assertOk();
}
public function test_stats_returns_array_with_expected_keys(): void
{
$this->actingAsHades();
$component = Livewire::test(Dashboard::class);
$stats = $component->instance()->stats;
$this->assertIsArray($stats);
$this->assertArrayHasKey('active_plans', $stats);
$this->assertArrayHasKey('total_plans', $stats);
$this->assertArrayHasKey('active_sessions', $stats);
$this->assertArrayHasKey('today_sessions', $stats);
$this->assertArrayHasKey('tool_calls_7d', $stats);
$this->assertArrayHasKey('success_rate', $stats);
}
public function test_stat_cards_returns_four_items(): void
{
$this->actingAsHades();
$component = Livewire::test(Dashboard::class);
$cards = $component->instance()->statCards;
$this->assertIsArray($cards);
$this->assertCount(4, $cards);
}
public function test_blocked_alert_is_null_when_no_blocked_plans(): void
{
$this->actingAsHades();
$component = Livewire::test(Dashboard::class);
$this->assertNull($component->instance()->blockedAlert);
}
public function test_quick_links_returns_four_items(): void
{
$this->actingAsHades();
$component = Livewire::test(Dashboard::class);
$links = $component->instance()->quickLinks;
$this->assertIsArray($links);
$this->assertCount(4, $links);
}
}