minor #35847 [Notifier] Add unit tests (jschaedl)

This PR was merged into the 5.0 branch.

Discussion
----------

[Notifier] Add unit tests

| Q             | A
| ------------- | ---
| Branch?       | 5.0
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | - <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->

- [x] `AbstractChannel`
- [x] `ChannelPolicy`
- [x] `RecipientTest` (done in PR #35773)
- [x] `EmailRecipientTest` (done in PR #35773)
- [x] `SmsRecipientTest` (done in PR #35773)
- [x] `Transports` (see PR #35834)

Commits
-------

022c1707e2 [Notifier] Add tests for AbstractChannel and ChannelPolicy
This commit is contained in:
Fabien Potencier 2020-03-16 14:29:03 +01:00
commit 16ed2b9f7d
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']];
}
}