111 lines
3.7 KiB
PHP
111 lines
3.7 KiB
PHP
<?php
|
|
|
|
use App\Models\Timeline;
|
|
use App\Models\TimelineUpdate;
|
|
use App\Models\User;
|
|
|
|
test('client dashboard has my cases navigation link', function () {
|
|
$client = User::factory()->individual()->create();
|
|
|
|
$this->actingAs($client)
|
|
->get(route('client.dashboard'))
|
|
->assertOk()
|
|
->assertSee(__('client.my_cases'))
|
|
->assertSee(route('client.timelines.index'));
|
|
});
|
|
|
|
test('client dashboard shows active cases count in widget', function () {
|
|
$client = User::factory()->individual()->create();
|
|
Timeline::factory()->active()->count(3)->create(['user_id' => $client->id]);
|
|
Timeline::factory()->archived()->create(['user_id' => $client->id]);
|
|
|
|
$this->actingAs($client)
|
|
->get(route('client.dashboard'))
|
|
->assertSee('3'); // Only active cases counted
|
|
});
|
|
|
|
test('client dashboard shows latest timeline update', function () {
|
|
$client = User::factory()->individual()->create();
|
|
$timeline = Timeline::factory()->active()->create([
|
|
'user_id' => $client->id,
|
|
'case_name' => 'Property Dispute Case',
|
|
]);
|
|
TimelineUpdate::factory()->create([
|
|
'timeline_id' => $timeline->id,
|
|
'update_text' => 'Latest update about the property dispute.',
|
|
'created_at' => now(),
|
|
]);
|
|
|
|
$this->actingAs($client)
|
|
->get(route('client.dashboard'))
|
|
->assertSee('Latest update about the property dispute');
|
|
});
|
|
|
|
test('client dashboard shows empty state when no cases', function () {
|
|
$client = User::factory()->individual()->create();
|
|
|
|
$this->actingAs($client)
|
|
->get(route('client.dashboard'))
|
|
->assertSee(__('client.dashboard.no_cases'));
|
|
});
|
|
|
|
test('my cases navigation is active on timeline index route', function () {
|
|
$client = User::factory()->individual()->create();
|
|
|
|
$this->actingAs($client)
|
|
->get(route('client.timelines.index'))
|
|
->assertOk()
|
|
->assertSee(__('client.my_cases'));
|
|
});
|
|
|
|
test('my cases navigation is active on timeline show route', function () {
|
|
$client = User::factory()->individual()->create();
|
|
$timeline = Timeline::factory()->create(['user_id' => $client->id]);
|
|
|
|
$this->actingAs($client)
|
|
->get(route('client.timelines.show', $timeline))
|
|
->assertOk()
|
|
->assertSee(__('client.my_cases'));
|
|
});
|
|
|
|
test('timeline pages use client dashboard layout with navigation visible', function () {
|
|
$client = User::factory()->individual()->create();
|
|
|
|
// Timeline index shows navigation
|
|
$this->actingAs($client)
|
|
->get(route('client.timelines.index'))
|
|
->assertSee(__('client.my_cases'))
|
|
->assertSee(__('navigation.my_consultations'))
|
|
->assertSee(__('navigation.my_services'));
|
|
});
|
|
|
|
test('client sees my consultations navigation link', function () {
|
|
$client = User::factory()->individual()->create();
|
|
|
|
$this->actingAs($client)
|
|
->get(route('client.dashboard'))
|
|
->assertOk()
|
|
->assertSee(__('navigation.my_consultations'))
|
|
->assertSee(route('client.consultations.index'));
|
|
});
|
|
|
|
test('admin does not see client navigation items', function () {
|
|
$admin = User::factory()->admin()->create();
|
|
|
|
$this->actingAs($admin)
|
|
->get(route('admin.dashboard'))
|
|
->assertOk()
|
|
->assertDontSee(__('navigation.my_services'))
|
|
->assertDontSee(__('navigation.my_consultations'));
|
|
});
|
|
|
|
test('dashboard widget links to timeline index', function () {
|
|
$client = User::factory()->individual()->create();
|
|
Timeline::factory()->active()->create(['user_id' => $client->id]);
|
|
|
|
$this->actingAs($client)
|
|
->get(route('client.dashboard'))
|
|
->assertSee(__('client.dashboard.view_all_cases'))
|
|
->assertSee(route('client.timelines.index'));
|
|
});
|