backupscript/tests/Notification/NotificationTest.php

90 lines
2.7 KiB
PHP
Raw Normal View History

2023-07-10 09:20:36 +00:00
<?php
declare(strict_types=1);
namespace App\Tests;
2023-07-03 14:28:53 +00:00
use PHPUnit\Framework\TestCase;
use App\Notification\Notification;
use App\Notification\NotificationInterface;
use PHPUnit\Framework\Attributes\DataProvider;
2023-08-14 14:24:19 +00:00
use Exception;
2023-07-03 14:28:53 +00:00
final class NotificationTest extends TestCase
{
2024-02-07 11:00:08 +00:00
/**
* @var array<string, string>
*/
2023-07-10 09:20:36 +00:00
private static array $config = ['type' => 'ntfy', 'domain' => 'https://test.com', 'topic' => 'testing'];
2023-07-03 14:28:53 +00:00
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()));
}
2023-08-14 14:24:19 +00:00
public function testSendNoNotifier(): void
2023-07-03 14:28:53 +00:00
{
$dut = new Notification();
2023-08-14 14:24:19 +00:00
$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');
2023-07-03 14:28:53 +00:00
$dut->send('title', 'topic');
}
2023-07-10 09:20:36 +00:00
}