127 lines
4.2 KiB
PHP
Executable File
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'
|
|
);
|
|
}
|
|
}
|
|
}
|