[Notifier] Add tests for AbstractChannel and ChannelPolicy

This commit is contained in:
Jan Schädlich 2020-02-17 17:19:34 +01:00
parent 8c778cbaa3
commit 022c1707e2
2 changed files with 92 additions and 0 deletions

View File

@ -0,0 +1,44 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Notifier\Tests\Channel;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Notifier\Channel\AbstractChannel;
use Symfony\Component\Notifier\Exception\LogicException;
use Symfony\Component\Notifier\Notification\Notification;
use Symfony\Component\Notifier\Recipient\Recipient;
/**
* @author Jan Schädlich <jan.schaedlich@sensiolabs.de>
*/
class AbstractChannelTest extends TestCase
{
public function testChannelCannotBeConstructedWithoutTransportAndBus()
{
$this->expectException(LogicException::class);
new DummyChannel();
}
}
class DummyChannel extends AbstractChannel
{
public function notify(Notification $notification, Recipient $recipient, string $transportName = null): void
{
return;
}
public function supports(Notification $notification, Recipient $recipient): bool
{
return false;
}
}

View File

@ -0,0 +1,48 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Notifier\Tests\Channel;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Notifier\Channel\ChannelPolicy;
use Symfony\Component\Notifier\Exception\InvalidArgumentException;
/**
* @author Jan Schädlich <jan.schaedlich@sensiolabs.de>
*/
class ChannelPolicyTest extends TestCase
{
public function testCannotRetrieveChannelsUsingUnavailableImportance()
{
$this->expectException(InvalidArgumentException::class);
$channelPolicy = new ChannelPolicy(['urgent' => ['chat']]);
$channelPolicy->getChannels('low');
}
/**
* @dataProvider provideValidPolicies
*/
public function testCanRetrieveChannels(array $policy, string $importance, array $expectedChannels)
{
$channelPolicy = new ChannelPolicy($policy);
$channels = $channelPolicy->getChannels($importance);
$this->assertSame($expectedChannels, $channels);
}
public function provideValidPolicies(): \Generator
{
yield [['urgent' => ['chat']], 'urgent', ['chat']];
yield [['urgent' => ['chat', 'sms']], 'urgent', ['chat', 'sms']];
yield [['urgent' => ['chat', 'chat/slack', 'sms']], 'urgent', ['chat', 'chat/slack', 'sms']];
}
}