| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- namespace Illuminate\Tests\Notifications;
- use Illuminate\Container\Container;
- use Illuminate\Contracts\Notifications\Dispatcher;
- use Illuminate\Notifications\RoutesNotifications;
- use Illuminate\Support\Facades\Notification;
- use InvalidArgumentException;
- use Mockery as m;
- use PHPUnit\Framework\TestCase;
- use stdClass;
- class NotificationRoutesNotificationsTest extends TestCase
- {
- protected function tearDown(): void
- {
- m::close();
- Container::setInstance(null);
- }
- public function testNotificationCanBeDispatched()
- {
- $container = new Container;
- $factory = m::mock(Dispatcher::class);
- $container->instance(Dispatcher::class, $factory);
- $notifiable = new RoutesNotificationsTestInstance;
- $instance = new stdClass;
- $factory->shouldReceive('send')->with($notifiable, $instance);
- Container::setInstance($container);
- $notifiable->notify($instance);
- }
- public function testNotificationCanBeSentNow()
- {
- $container = new Container;
- $factory = m::mock(Dispatcher::class);
- $container->instance(Dispatcher::class, $factory);
- $notifiable = new RoutesNotificationsTestInstance;
- $instance = new stdClass;
- $factory->shouldReceive('sendNow')->with($notifiable, $instance, null);
- Container::setInstance($container);
- $notifiable->notifyNow($instance);
- }
- public function testNotificationOptionRouting()
- {
- $instance = new RoutesNotificationsTestInstance;
- $this->assertSame('bar', $instance->routeNotificationFor('foo'));
- $this->assertSame('taylor@laravel.com', $instance->routeNotificationFor('mail'));
- }
- public function testOnDemandNotificationsCannotUseDatabaseChannel()
- {
- $this->expectExceptionObject(
- new InvalidArgumentException('The database channel does not support on-demand notifications.')
- );
- Notification::route('database', 'foo');
- }
- }
- class RoutesNotificationsTestInstance
- {
- use RoutesNotifications;
- protected $email = 'taylor@laravel.com';
- public function routeNotificationForFoo()
- {
- return 'bar';
- }
- }
|