php-tenant/tests/Feature/ProfileTest.php
Snider 86dbf4e763 fix: namespace to Core\Mod\Tenant, restructure package
- Changed namespace from Core\Core\Tenant to Core\Mod\Tenant
- Moved src/ contents to root
- Removed Host UK extension files (admin.php, MemberManager, TeamManager)
- Fixed composer.json autoload paths
2026-01-27 00:58:42 +00:00

131 lines
3.7 KiB
PHP

<?php
namespace Core\Mod\Tenant\Tests\Feature;
use Core\Mod\Hub\View\Modal\Admin\Profile;
use Core\Mod\Tenant\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire;
use Tests\TestCase;
class ProfileTest extends TestCase
{
use RefreshDatabase;
protected function createUser(array $attributes = []): User
{
return User::factory()->create($attributes);
}
public function test_profile_page_is_accessible_when_authenticated(): void
{
$user = $this->createUser();
$response = $this->actingAs($user)->get('/hub/profile');
$response->assertStatus(200);
$response->assertSee('Usage');
}
public function test_profile_page_redirects_guests_to_login(): void
{
$response = $this->get('/hub/profile');
$response->assertRedirect('/login');
}
public function test_profile_displays_user_name(): void
{
$user = $this->createUser([
'name' => 'Test User',
'email' => 'test@example.com',
]);
$component = Livewire::actingAs($user)->test(Profile::class);
$this->assertEquals('Test User', $component->get('userName'));
$this->assertEquals('test@example.com', $component->get('userEmail'));
}
public function test_profile_calculates_user_initials(): void
{
$user = $this->createUser(['name' => 'John Doe']);
$component = Livewire::actingAs($user)->test(Profile::class);
$this->assertEquals('JD', $component->get('userInitials'));
}
public function test_profile_calculates_initials_for_single_name(): void
{
$user = $this->createUser(['name' => 'Madonna']);
$component = Livewire::actingAs($user)->test(Profile::class);
$this->assertEquals('M', $component->get('userInitials'));
}
public function test_profile_loads_quotas(): void
{
$user = $this->createUser();
$component = Livewire::actingAs($user)->test(Profile::class);
$quotas = $component->get('quotas');
$this->assertArrayHasKey('workspaces', $quotas);
$this->assertArrayHasKey('social_accounts', $quotas);
$this->assertArrayHasKey('scheduled_posts', $quotas);
$this->assertArrayHasKey('storage', $quotas);
}
public function test_profile_loads_service_stats(): void
{
$user = $this->createUser();
$component = Livewire::actingAs($user)->test(Profile::class);
$stats = $component->get('serviceStats');
$this->assertNotEmpty($stats);
$this->assertArrayHasKey('name', $stats[0]);
$this->assertArrayHasKey('icon', $stats[0]);
$this->assertArrayHasKey('color', $stats[0]);
$this->assertArrayHasKey('status', $stats[0]);
}
public function test_profile_loads_recent_activity(): void
{
$user = $this->createUser();
$component = Livewire::actingAs($user)->test(Profile::class);
$activity = $component->get('recentActivity');
$this->assertIsArray($activity);
}
public function test_profile_shows_member_since_date(): void
{
$user = $this->createUser();
$component = Livewire::actingAs($user)->test(Profile::class);
$memberSince = $component->get('memberSince');
$this->assertNotNull($memberSince);
$this->assertMatchesRegularExpression('/\w+ \d{4}/', $memberSince);
}
public function test_profile_shows_user_tier(): void
{
$user = $this->createUser();
$component = Livewire::actingAs($user)->test(Profile::class);
$userTier = $component->get('userTier');
$this->assertNotNull($userTier);
$this->assertContains($userTier, ['Free', 'Apollo', 'Hades']);
}
}