Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace MauticPlugin\MauticFocusBundle\Tests\Helper; | |
| use Mautic\CoreBundle\Security\Permissions\CorePermissions; | |
| use MauticPlugin\MauticFocusBundle\Entity\Focus; | |
| use MauticPlugin\MauticFocusBundle\Helper\TokenHelper; | |
| use MauticPlugin\MauticFocusBundle\Model\FocusModel; | |
| use PHPUnit\Framework\MockObject\MockObject; | |
| use PHPUnit\Framework\TestCase; | |
| use Symfony\Component\Routing\RouterInterface; | |
| class TokenHelperTest extends TestCase | |
| { | |
| /** | |
| * @var FocusModel|MockObject | |
| */ | |
| private MockObject $model; | |
| /** | |
| * @var MockObject|RouterInterface | |
| */ | |
| private MockObject $router; | |
| /** | |
| * @var CorePermissions|MockObject | |
| */ | |
| private MockObject $security; | |
| private TokenHelper $helper; | |
| protected function setUp(): void | |
| { | |
| parent::setUp(); | |
| $this->model = $this->createMock(FocusModel::class); | |
| $this->router = $this->createMock(RouterInterface::class); | |
| $this->security = $this->createMock(CorePermissions::class); | |
| $this->helper = new TokenHelper($this->model, $this->router, $this->security); | |
| } | |
| public function testFindFocusTokensNotFound(): void | |
| { | |
| $content = 'content'; | |
| self::assertSame([], $this->helper->findFocusTokens($content)); | |
| } | |
| public function testFindFocusTokensFound(): void | |
| { | |
| $content = 'content {focus=1}'; | |
| self::assertSame(['{focus=1}' => ''], $this->helper->findFocusTokens($content)); | |
| } | |
| public function testFindFocusTokensFoundAddScriptByFocusPublishedStatus(): void | |
| { | |
| $focusItemId = 1; | |
| $content = "content {focus=$focusItemId}"; | |
| $focusItem = new Focus(); | |
| $focusItem->setIsPublished(true); | |
| $this->model->expects(self::once()) | |
| ->method('getEntity') | |
| ->with($focusItemId) | |
| ->willReturn($focusItem); | |
| self::assertSame( | |
| ['{focus=1}' => '<script src="" type="text/javascript" charset="utf-8" async="async"></script>'], | |
| $this->helper->findFocusTokens($content) | |
| ); | |
| } | |
| public function testFindFocusTokensFoundAddScriptByAccessCheck(): void | |
| { | |
| $focusItemId = 1; | |
| $createdById = 2; | |
| $content = "content {focus=$focusItemId}"; | |
| $focusItem = new Focus(); | |
| $focusItem->setIsPublished(false); | |
| $focusItem->setCreatedBy($createdById); | |
| $this->model->expects(self::once()) | |
| ->method('getEntity') | |
| ->with($focusItemId) | |
| ->willReturn($focusItem); | |
| $this->security->expects(self::once()) | |
| ->method('hasEntityAccess') | |
| ->with( | |
| 'focus:items:viewown', | |
| 'focus:items:viewother', | |
| $focusItem->getCreatedBy() | |
| ) | |
| ->willReturn(true); | |
| self::assertSame( | |
| ['{focus=1}' => '<script src="" type="text/javascript" charset="utf-8" async="async"></script>'], | |
| $this->helper->findFocusTokens($content) | |
| ); | |
| } | |
| } | |