Skip to content

Commit

Permalink
[Notifier] Add tests for AbstractChannel and ChannelPolicy
Browse files Browse the repository at this point in the history
  • Loading branch information
jschaedl committed Mar 8, 2020
1 parent d41f424 commit 02e72c2
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 0 deletions.
44 changes: 44 additions & 0 deletions Tests/Channel/AbstractChannelTest.php
Original file line number Diff line number Diff line change
@@ -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 Tests/Channel/ChannelPolicyTest.php
Original file line number Diff line number Diff line change
@@ -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 02e72c2

Please sign in to comment.