Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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
-------

022c170 [Notifier] Add tests for AbstractChannel and ChannelPolicy
  • Loading branch information
fabpot committed Mar 16, 2020
2 parents 4efa287 + 022c170 commit 16ed2b9
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 0 deletions.
@@ -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;
}
}
48 changes: 48 additions & 0 deletions src/Symfony/Component/Notifier/Tests/Channel/ChannelPolicyTest.php
@@ -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']];
}
}

0 comments on commit 16ed2b9

Please sign in to comment.