У меня есть рабочий код, в котором при создании записи клиента отправляется событие, а затем слушатель отправляет уведомление агенту клиента.
EventServiceProvider. php
protected $listen = [
'App\Events\CustomerCreated' => [
'App\Listeners\TriggerExternalCustomerCreation',
'App\Listeners\SendNotificationCustomerCreated',
],
]
SendNotificationCustomerCreated. php
public function handle(CustomerCreated $event)
{
$when = now()->addMinutes(0);
$event->customer->manager->notify((new CustomerCreatedNotification($event->customer))->delay($when));
}
Вот мой тестовый пример: -
public function customer_created_event_dispatch()
{
// $this->markTestIncomplete('This test has not been implemented yet.');
$this->withoutExceptionHandling();
Event::fake();
Notification::fake();
$user = factory(User::class)->states('order management')->create();
$data = $this->data(['address' => true, 'contact' => true]);
$response = $this->actingAs($user)->post(route('customers.store'), $data);
$response->assertSessionHasNoErrors();
$customers = Customer::all();
$customer = $customers->first();
$manager = $customer->manager;
$this->assertCount(1, $customers);
Event::assertDispatched(CustomerCreated::class, function ($event) use ($customers) {
return $event->customer->id === $customers->first()->id;
});
Notification::assertSentTo(
$manager,
CustomerCreatedNotification::class,
function ($notification, $channels) use ($customer) {
return $notification->customer->id === $customer->id;
}
);
}
Первоначально слушатель находится в очереди, но я пытаюсь удалить из очереди, но ошибка остается.
Я могу подтвердить, что событие отправлено, поскольку оно передало Event :: assertDispatched. Но не удалось при последнем утверждении с ошибками ниже: -
The expected [App\Notifications\CustomerCreatedNotification] notification was not sent