1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
<?php
namespace Illuminate\Tests\Integration\Notifications;
use Illuminate\Notifications\AnonymousNotifiable;
use Illuminate\Notifications\Notification;
use Illuminate\Support\Facades\Notification as NotificationFacade;
use Illuminate\Support\Testing\Fakes\NotificationFake;
use Orchestra\Testbench\TestCase;
class SendingNotificationsViaAnonymousNotifiableTest extends TestCase
{
public function testMailIsSent()
{
$notifiable = (new AnonymousNotifiable)
->route('testchannel', 'enzo')
->route('anothertestchannel', 'enzo@deepblue.com');
NotificationFacade::send(
$notifiable,
new TestMailNotificationForAnonymousNotifiable
);
$this->assertEquals([
'enzo', 'enzo@deepblue.com',
], $_SERVER['__notifiable.route']);
}
public function testAnonymousNotifiableWithMultipleRoutes()
{
$_SERVER['__notifiable.route'] = [];
NotificationFacade::routes([
'testchannel' => 'enzo',
'anothertestchannel' => 'enzo@deepblue.com',
])->notify(new TestMailNotificationForAnonymousNotifiable());
$this->assertEquals([
'enzo', 'enzo@deepblue.com',
], $_SERVER['__notifiable.route']);
}
public function testFaking()
{
$fake = NotificationFacade::fake();
$this->assertInstanceOf(NotificationFake::class, $fake);
$notifiable = (new AnonymousNotifiable)
->route('testchannel', 'enzo')
->route('anothertestchannel', 'enzo@deepblue.com');
NotificationFacade::locale('it')->send(
$notifiable,
new TestMailNotificationForAnonymousNotifiable
);
NotificationFacade::assertSentTo(new AnonymousNotifiable, TestMailNotificationForAnonymousNotifiable::class,
function ($notification, $channels, $notifiable, $locale) {
return $notifiable->routes['testchannel'] === 'enzo' &&
$notifiable->routes['anothertestchannel'] === 'enzo@deepblue.com' &&
$locale === 'it';
}
);
}
}
class TestMailNotificationForAnonymousNotifiable extends Notification
{
public function via($notifiable)
{
return [TestCustomChannel::class, AnotherTestCustomChannel::class];
}
}
class TestCustomChannel
{
public function send($notifiable, $notification)
{
$_SERVER['__notifiable.route'][] = $notifiable->routeNotificationFor('testchannel');
}
}
class AnotherTestCustomChannel
{
public function send($notifiable, $notification)
{
$_SERVER['__notifiable.route'][] = $notifiable->routeNotificationFor('anothertestchannel');
}
}
|