Jens True
6ce774236e
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Build and test / requirements (push) Failing after 3m48s
90 lines
2.7 KiB
PHP
90 lines
2.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Tests;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use App\Notification\Notification;
|
|
use App\Notification\NotificationInterface;
|
|
use PHPUnit\Framework\Attributes\DataProvider;
|
|
use Exception;
|
|
|
|
final class NotificationTest extends TestCase
|
|
{
|
|
/**
|
|
* @var array<string, string>
|
|
*/
|
|
private static array $config = ['type' => 'ntfy', 'domain' => 'https://test.com', 'topic' => 'testing'];
|
|
|
|
public function testloadSingle(): void
|
|
{
|
|
$dut = new Notification();
|
|
$dut->loadSingle('ntfy', self::$config);
|
|
$this->assertEquals(1, count($dut->getNotifiers()));
|
|
|
|
$dut->loadSingle('Ntfy', self::$config);
|
|
$this->assertEquals(2, count($dut->getNotifiers()));
|
|
|
|
$dut->loadSingle('NTFY', self::$config);
|
|
$this->assertEquals(3, count($dut->getNotifiers()));
|
|
|
|
$dut->loadSingle('invalid', self::$config);
|
|
$this->assertEquals(3, count($dut->getNotifiers()));
|
|
}
|
|
|
|
public function testloadMany(): void
|
|
{
|
|
$dut = new Notification();
|
|
|
|
$arr = [];
|
|
$arr[] = self::$config;
|
|
$arr[] = self::$config;
|
|
$arr[] = self::$config;
|
|
$arr[] = self::$config;
|
|
$dut->loadMany($arr);
|
|
|
|
$this->assertEquals(4, count($dut->getNotifiers()));
|
|
}
|
|
|
|
public function testSendNoNotifier(): void
|
|
{
|
|
$dut = new Notification();
|
|
$dut->send('title', 'topic');
|
|
$this->assertEquals(0, count($dut->getNotifiers()));
|
|
}
|
|
|
|
public function testSendOneNotifier(): void
|
|
{
|
|
$dut = new Notification();
|
|
$mock1 = $this->createMock(NotificationInterface::class);
|
|
$dut->addNotifier($mock1);
|
|
$mock1->expects($this->once())->method('send');
|
|
$dut->send('title', 'topic');
|
|
}
|
|
|
|
public function testSendMoreNotifiers(): void
|
|
{
|
|
$dut = new Notification();
|
|
$mock1 = $this->createMock(NotificationInterface::class);
|
|
$mock2 = $this->createMock(NotificationInterface::class);
|
|
$dut->addNotifier($mock1);
|
|
$dut->addNotifier($mock2);
|
|
$mock1->expects($this->once())->method('send');
|
|
$mock2->expects($this->once())->method('send');
|
|
$dut->send('title', 'topic');
|
|
}
|
|
|
|
public function testSendErrorInNotifiers(): void
|
|
{
|
|
$dut = new Notification();
|
|
$mock1 = $this->createMock(NotificationInterface::class);
|
|
$mock2 = $this->createMock(NotificationInterface::class);
|
|
$dut->addNotifier($mock1);
|
|
$dut->addNotifier($mock2);
|
|
$mock1->expects($this->once())->method('send')->willThrowException(new Exception());
|
|
$mock2->expects($this->once())->method('send');
|
|
$dut->send('title', 'topic');
|
|
}
|
|
}
|