Spaces:
No application file
No application file
mautic
/
app
/bundles
/IntegrationsBundle
/Tests
/Unit
/Sync
/Notification
/Helper
/UserNotificationHelperTest.php
| declare(strict_types=1); | |
| namespace Mautic\IntegrationsBundle\Tests\Unit\Sync\Notification\Helper; | |
| use Mautic\IntegrationsBundle\Sync\Notification\Helper\OwnerProvider; | |
| use Mautic\IntegrationsBundle\Sync\Notification\Helper\RouteHelper; | |
| use Mautic\IntegrationsBundle\Sync\Notification\Helper\UserHelper; | |
| use Mautic\IntegrationsBundle\Sync\Notification\Helper\UserNotificationBuilder; | |
| use Mautic\IntegrationsBundle\Sync\Notification\Helper\UserNotificationHelper; | |
| use Mautic\IntegrationsBundle\Sync\Notification\Writer; | |
| use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\Object\Contact; | |
| use PHPUnit\Framework\MockObject\MockObject; | |
| use PHPUnit\Framework\TestCase; | |
| use Symfony\Contracts\Translation\TranslatorInterface; | |
| class UserNotificationHelperTest extends TestCase | |
| { | |
| /** | |
| * @var Writer|MockObject | |
| */ | |
| private MockObject $writer; | |
| /** | |
| * @var UserHelper|MockObject | |
| */ | |
| private MockObject $userHelper; | |
| /** | |
| * @var OwnerProvider|MockObject | |
| */ | |
| private MockObject $ownerProvider; | |
| /** | |
| * @var RouteHelper|MockObject | |
| */ | |
| private MockObject $routeHelper; | |
| /** | |
| * @var TranslatorInterface|MockObject | |
| */ | |
| private MockObject $translator; | |
| private UserNotificationHelper $helper; | |
| protected function setUp(): void | |
| { | |
| $this->writer = $this->createMock(Writer::class); | |
| $this->userHelper = $this->createMock(UserHelper::class); | |
| $this->ownerProvider = $this->createMock(OwnerProvider::class); | |
| $this->routeHelper = $this->createMock(RouteHelper::class); | |
| $this->translator = $this->createMock(TranslatorInterface::class); | |
| $userNotificationBuilder = new UserNotificationBuilder($this->userHelper, | |
| $this->ownerProvider, | |
| $this->routeHelper, | |
| $this->translator | |
| ); | |
| $this->helper = new UserNotificationHelper($this->writer, $userNotificationBuilder); | |
| } | |
| public function testNotificationSentToOwner(): void | |
| { | |
| $this->ownerProvider->expects($this->once()) | |
| ->method('getOwnersForObjectIds') | |
| ->with(Contact::NAME, [1]) | |
| ->willReturn([['owner_id' => 1, 'id' => 1]]); | |
| $this->userHelper->expects($this->never()) | |
| ->method('getAdminUsers'); | |
| $this->translator->expects($this->exactly(2)) | |
| ->method('trans') | |
| ->withConsecutive( | |
| ['mautic.integration.sync.user_notification.header', $this->anything()], | |
| ['mautic.integration.sync.user_notification.sync_error', $this->anything()] | |
| ) | |
| ->willReturn('test'); | |
| $this->writer->expects($this->once()) | |
| ->method('writeUserNotification'); | |
| $this->routeHelper->expects($this->once()) | |
| ->method('getLink'); | |
| $this->helper->writeNotification('test', 'test', 'test', Contact::NAME, 1, 'foobar'); | |
| } | |
| public function testNotificationSentToAdmins(): void | |
| { | |
| $this->ownerProvider->expects($this->once()) | |
| ->method('getOwnersForObjectIds') | |
| ->with(Contact::NAME, [1]) | |
| ->willReturn([]); | |
| $this->userHelper->expects($this->once()) | |
| ->method('getAdminUsers') | |
| ->willReturn([1]); | |
| $this->translator->expects($this->exactly(2)) | |
| ->method('trans') | |
| ->withConsecutive( | |
| ['mautic.integration.sync.user_notification.header', $this->anything()], | |
| ['mautic.integration.sync.user_notification.sync_error', $this->anything()] | |
| ) | |
| ->willReturn('test'); | |
| $this->writer->expects($this->once()) | |
| ->method('writeUserNotification'); | |
| $this->routeHelper->expects($this->once()) | |
| ->method('getLink'); | |
| $this->helper->writeNotification('test', 'test', 'test', Contact::NAME, 1, 'foobar'); | |
| } | |
| } | |