magento2-docker/dev/tests/integration/testsuite/Magento/Integration/Model/ConfigBasedIntegrationManag...

127 lines
4.2 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Integration\Model;
/**
* Test class for \Magento\Integration\Model\ConfigBasedIntegrationManager.php.
*/
class ConfigBasedIntegrationManagerTest extends \PHPUnit\Framework\TestCase
{
/**
* @var \PHPUnit\Framework\MockObject\MockObject
*/
protected $consolidatedMock;
/**
* @var \Magento\Integration\Model\ConfigBasedIntegrationManager
*/
protected $integrationManager;
/**
* @var \Magento\Integration\Api\IntegrationServiceInterface
*/
protected $integrationService;
/**
* @var \Magento\TestFramework\ObjectManager
*/
protected $objectManager;
/**
* @inheritdoc
*/
protected function setUp(): void
{
parent::setUp();
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
$this->consolidatedMock = $this->createMock(\Magento\Integration\Model\ConsolidatedConfig::class);
$this->objectManager->addSharedInstance(
$this->consolidatedMock,
\Magento\Integration\Model\ConsolidatedConfig::class
);
$this->integrationManager = $this->objectManager->create(
\Magento\Integration\Model\ConfigBasedIntegrationManager::class,
[]
);
$this->integrationService = $this->objectManager->create(
\Magento\Integration\Api\IntegrationServiceInterface::class,
[]
);
}
/**
* @inheritdoc
*/
protected function tearDown(): void
{
$this->objectManager->removeSharedInstance(\Magento\Integration\Model\ConsolidatedConfig::class);
parent::tearDown();
}
/**
* @magentoDbIsolation enabled
*/
public function testProcessConfigBasedIntegrations()
{
$newIntegrations = require __DIR__ . '/Config/Consolidated/_files/integration.php';
$this->consolidatedMock
->expects($this->any())
->method('getIntegrations')
->willReturn($newIntegrations);
// Check that the integrations do not exist already
foreach ($newIntegrations as $integrationName => $integrationData) {
$integration = $this->integrationService->findByName($integrationName);
$this->assertNull($integration->getId(), 'Integration already exists');
}
// Create new integrations
$this->assertEquals(
$newIntegrations,
$this->integrationManager->processConfigBasedIntegrations($newIntegrations),
'Error processing config based integrations.'
);
$createdIntegrations = [];
// Check that the integrations are new with "inactive" status
foreach ($newIntegrations as $integrationName => $integrationData) {
$integration = $this->integrationService->findByName($integrationName);
$this->assertNotEmpty($integration->getId(), 'Integration was not created');
$this->assertEquals(
$integration::STATUS_INACTIVE,
$integration->getStatus(),
'Integration is not created with "inactive" status'
);
$createdIntegrations[$integrationName] = $integration;
}
// Rerun integration creation with the same data (data has not changed)
$this->assertEquals(
$newIntegrations,
$this->integrationManager->processConfigBasedIntegrations($newIntegrations),
'Error processing config based integrations.'
);
// Check that the integrations are not recreated when data has not actually changed
foreach ($newIntegrations as $integrationName => $integrationData) {
$integration = $this->integrationService->findByName($integrationName);
$this->assertEquals(
$createdIntegrations[$integrationName]->getId(),
$integration->getId(),
'Integration ID has changed'
);
$this->assertEquals(
$createdIntegrations[$integrationName]->getStatus(),
$integration->getStatus(),
'Integration status has changed'
);
}
}
}