feat: notification on filament dashboard

This commit is contained in:
2026-05-22 12:15:23 +02:00
parent 1c472e46db
commit 071d147888
9 changed files with 121 additions and 85 deletions
+8 -10
View File
@@ -6,9 +6,7 @@ use App\Models\MealPosts;
use App\Models\ModerationCase;
use App\Models\Report;
use App\Models\User;
use App\Notifications\ModerationThresholdReached;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Notification;
use Laravel\Sanctum\Sanctum;
uses(RefreshDatabase::class);
@@ -99,8 +97,6 @@ it('reports users and prevents reporting own profile', function () {
});
it('notifies moderators once when a report threshold is reached', function () {
Notification::fake();
$admin = User::factory()->create(['role' => UserRole::ADMIN]);
$moderator = User::factory()->create(['role' => UserRole::MODERATOR]);
$regularUser = User::factory()->create();
@@ -119,11 +115,12 @@ it('notifies moderators once when a report threshold is reached', function () {
expect($moderationCase->reports_count)->toBe(3)
->and($moderationCase->threshold_notified_at)->not->toBeNull();
Notification::assertSentTo($admin, ModerationThresholdReached::class);
Notification::assertSentTo($moderator, ModerationThresholdReached::class);
Notification::assertNotSentTo($regularUser, ModerationThresholdReached::class);
Notification::assertSentTimes(ModerationThresholdReached::class, 2);
expect((new ModerationThresholdReached($moderationCase))->via($admin))->toBe(['database']);
expect($admin->notifications)->toHaveCount(1)
->and($admin->notifications->first()->data['format'])->toBe('filament')
->and($admin->notifications->first()->data['title'])->toBe(__('api.notifications.moderation_threshold_title'))
->and($moderator->notifications)->toHaveCount(1)
->and($moderator->notifications->first()->data['format'])->toBe('filament')
->and($regularUser->notifications)->toHaveCount(0);
Sanctum::actingAs(User::factory()->create());
@@ -131,5 +128,6 @@ it('notifies moderators once when a report threshold is reached', function () {
'reason' => ReportReason::MISLEADING->value,
])->assertCreated();
Notification::assertSentTimes(ModerationThresholdReached::class, 2);
expect($admin->fresh()->notifications)->toHaveCount(1)
->and($moderator->fresh()->notifications)->toHaveCount(1);
});