FilamentF
Filament14mo ago
Kane G

Is it possible to test broadcast notifications?

I'm currently using reverb to broadcast notifications, everything is working fine and the notifications are coming through. I'd like to run some tests to ensure this is always the case but I can't seem to get assertNotified to return
true
while using toBroadcast(). If I switch it back to send() the notification test passes (which a few other small changes - eg. removing notification from notify() function.)

I'm triggering the notification like this:

try {
    if (Carbon::parse($this->data['starts_at'])->gte(Carbon::parse($this->data['ends_at']))) {
        throw new \Exception('Date Error');
    }
} catch (\Exception $e) {
    auth()->user()->notify(
        Notification::make()
            ->danger()
            ->title('Date Error')
            ->body('Ends at date should be greater than the starts at date.')
            ->persistent()
            ->toBroadcast()
    );

    $this->halt();
}


Testing notification like this:
Livewire::actingAs($this->user)
    ->test(CreateTenancy::class)
    ->fillForm([
        'starts_at' => now()->addDays(5)->toDateString(),
        'ends_at' => now()->toDateString(),
    ])
    ->call('create')
    ->assertNotified(
        Notification::make()
            ->danger()
            ->title('Date Error')
            ->body('Ends at date should be greater than the starts at date.')
            ->persistent()
    );


Test currently fails with:
A notification was not sent
Failed asserting that null is not null.


Thanks.
Was this page helpful?