Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\IntegrationsBundle\Tests\Unit\Helper; | |
use Mautic\IntegrationsBundle\Exception\IntegrationNotFoundException; | |
use Mautic\IntegrationsBundle\Helper\BuilderIntegrationsHelper; | |
use Mautic\IntegrationsBundle\Helper\IntegrationsHelper; | |
use Mautic\IntegrationsBundle\Integration\Interfaces\BuilderInterface; | |
use Mautic\PluginBundle\Entity\Integration; | |
use PHPUnit\Framework\Assert; | |
use PHPUnit\Framework\MockObject\MockObject; | |
use PHPUnit\Framework\TestCase; | |
class BuilderIntegrationsHelperTest extends TestCase | |
{ | |
/** | |
* @var IntegrationsHelper|MockObject | |
*/ | |
private MockObject $integrationsHelper; | |
private BuilderIntegrationsHelper $builderIntegrationsHelper; | |
protected function setUp(): void | |
{ | |
$this->integrationsHelper = $this->createMock(IntegrationsHelper::class); | |
$this->builderIntegrationsHelper = new BuilderIntegrationsHelper($this->integrationsHelper); | |
} | |
public function testBuilderNotFoundIfFeatureSupportedButNotEnabled(): void | |
{ | |
$builder = $this->createMock(BuilderInterface::class); | |
$integration = new Integration(); | |
$builder->expects($this->once()) | |
->method('isSupported') | |
->with('page') | |
->willReturn(true); | |
$builder->expects($this->once()) | |
->method('getIntegrationConfiguration') | |
->willReturn($integration); | |
$this->builderIntegrationsHelper->addIntegration($builder); | |
$this->expectException(IntegrationNotFoundException::class); | |
$this->builderIntegrationsHelper->getBuilder('page'); | |
} | |
public function testBuilderNotFoundIfFeatureIsNotSupported(): void | |
{ | |
$builder = $this->createMock(BuilderInterface::class); | |
$builder->expects($this->once()) | |
->method('isSupported') | |
->with('page') | |
->willReturn(false); | |
$builder->expects($this->never()) | |
->method('getIntegrationConfiguration'); | |
$this->builderIntegrationsHelper->addIntegration($builder); | |
$this->expectException(IntegrationNotFoundException::class); | |
$this->builderIntegrationsHelper->getBuilder('page'); | |
} | |
public function testBuilderFoundIfFeatureIsSupportedAndBuilderEnabled(): void | |
{ | |
$builder = $this->createMock(BuilderInterface::class); | |
$integration = new Integration(); | |
$integration->setIsPublished(true); | |
$builder->expects($this->once()) | |
->method('isSupported') | |
->with('page') | |
->willReturn(true); | |
$builder->expects($this->once()) | |
->method('getIntegrationConfiguration') | |
->willReturn($integration); | |
$this->builderIntegrationsHelper->addIntegration($builder); | |
$foundBuilder = $this->builderIntegrationsHelper->getBuilder('page'); | |
Assert::assertSame($builder, $foundBuilder); | |
} | |
public function testBuilderNamesAreReturned(): void | |
{ | |
$builder1 = $this->createMock(BuilderInterface::class); | |
$builder1->expects($this->exactly(2)) | |
->method('getName') | |
->willReturn('builder1'); | |
$builder1->expects($this->once()) | |
->method('getDisplayName') | |
->willReturn('Builder One'); | |
$this->builderIntegrationsHelper->addIntegration($builder1); | |
$builder2 = $this->createMock(BuilderInterface::class); | |
$builder2->expects($this->exactly(2)) | |
->method('getName') | |
->willReturn('builder2'); | |
$builder2->expects($this->once()) | |
->method('getDisplayName') | |
->willReturn('Builder Two'); | |
$this->builderIntegrationsHelper->addIntegration($builder2); | |
Assert::assertSame( | |
[ | |
'builder1' => 'Builder One', | |
'builder2' => 'Builder Two', | |
], | |
$this->builderIntegrationsHelper->getBuilderNames() | |
); | |
} | |
} | |