File: /home/petsclubcc/magento/setup/src/Magento/Setup/Test/Unit/Controller/ComponentGridTest.php
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Setup\Test\Unit\Controller;
use Magento\Framework\Composer\ComposerInformation;
use Magento\Framework\Module\PackageInfo;
use Magento\Framework\Module\PackageInfoFactory;
use Magento\Setup\Controller\ComponentGrid;
use Magento\Setup\Model\ObjectManagerProvider;
use Magento\Framework\Module\FullModuleList;
use Magento\Framework\Module\ModuleList;
use Magento\Setup\Model\PackagesAuth;
use Magento\Setup\Model\PackagesData;
class ComponentGridTest extends \PHPUnit_Framework_TestCase
{
/**
* @var ComposerInformation|\PHPUnit_Framework_MockObject_MockObject
*/
private $composerInformationMock;
/**
* @var FullModuleList|\PHPUnit_Framework_MockObject_MockObject
*/
private $fullModuleListMock;
/**
* @var ModuleList|\PHPUnit_Framework_MockObject_MockObject
*/
private $enabledModuleListMock;
/**
* @var PackageInfoFactory|\PHPUnit_Framework_MockObject_MockObject
*/
private $packageInfoFactoryMock;
/**
* Module package info
*
* @var PackageInfo
*/
private $packageInfo;
/**
* Controller
*
* @var ComponentGrid
*/
private $controller;
/**
* @var PackagesData|\PHPUnit_Framework_MockObject_MockObject
*/
private $packagesData;
/**
* @var PackagesAuth|\PHPUnit_Framework_MockObject_MockObject
*/
private $packagesAuth;
/**
* @var ObjectManagerProvider|\PHPUnit_Framework_MockObject_MockObject
*/
private $objectManagerProvider;
/**
* @var array
*/
private $componentData = [];
/**
* @var array
*/
private $lastSyncData = [];
/**#@+
* Canned formatted date and time to return from mock
*/
const FORMATTED_DATE = 'Jan 15, 1980';
const FORMATTED_TIME = '1:55:55 PM';
/**#@-*/
public function setUp()
{
$this->lastSyncData = [
"lastSyncDate" => [
'date' => self::FORMATTED_DATE,
'time' => self::FORMATTED_TIME,
],
"packages" => [
'magento/sample-module-one' => [
'name' => 'magento/sample-module-one',
'type' => 'magento2-module',
'version' => '1.0.0'
]
],
'countOfInstall' => 0,
'countOfUpdate' => 1
];
$this->componentData = [
'magento/sample-module-one' => [
'name' => 'magento/sample-module-one',
'type' => 'magento2-module',
'version' => '1.0.0'
]
];
$allComponentData = [
'magento/sample-module-two' => [
'name' => 'magento/sample-module-two',
'type' => 'magento2-module',
'version' => '1.0.0'
]
];
$allComponentData = array_merge($allComponentData, $this->componentData);
$this->composerInformationMock = $this->getMock(
'Magento\Framework\Composer\ComposerInformation',
[],
[],
'',
false
);
/** @var ObjectManagerProvider|\PHPUnit_Framework_MockObject_MockObject $objectManagerProvider */
$this->objectManagerProvider = $this->getMock('Magento\Setup\Model\ObjectManagerProvider', [], [], '', false);
$this->packageInfoFactoryMock = $this
->getMock('Magento\Framework\Module\PackageInfoFactory', [], [], '', false);
$this->enabledModuleListMock = $this->getMock('Magento\Framework\Module\ModuleList', [], [], '', false);
$this->enabledModuleListMock->expects($this->any())->method('has')->willReturn(true);
$this->fullModuleListMock = $this->getMock('Magento\Framework\Module\FullModuleList', [], [], '', false);
$this->fullModuleListMock->expects($this->any())->method('getNames')->willReturn($allComponentData);
$this->packageInfo = $this->getMock('Magento\Framework\Module\PackageInfo', [], [], '', false);
$this->packagesData = $this->getMock('Magento\Setup\Model\PackagesData', [], [], '', false);
$this->packagesAuth = $this->getMock('Magento\Setup\Model\PackagesAuth', [], [], '', false);
$this->controller = new ComponentGrid(
$this->composerInformationMock,
$this->objectManagerProvider,
$this->packagesData,
$this->packagesAuth
);
}
public function testIndexAction()
{
$viewModel = $this->controller->indexAction();
$this->assertInstanceOf('Zend\View\Model\ViewModel', $viewModel);
$this->assertTrue($viewModel->terminate());
}
public function testComponentsAction()
{
$objectManager = $this->getMock('Magento\Framework\ObjectManagerInterface', [], [], '', false);
$this->objectManagerProvider->expects($this->once())
->method('get')
->willReturn($objectManager);
$objectManager->expects($this->any())
->method('get')
->willReturnMap([
['Magento\Framework\Module\PackageInfoFactory', $this->packageInfoFactoryMock],
['Magento\Framework\Module\FullModuleList', $this->fullModuleListMock],
['Magento\Framework\Module\ModuleList', $this->enabledModuleListMock],
]);
$this->packageInfoFactoryMock->expects($this->once())->method('create')->willReturn($this->packageInfo);
$this->fullModuleListMock->expects($this->once())
->method('getNames')
->willReturn(['magento/sample-module1']);
$this->packageInfo->expects($this->once())
->method('getModuleName')
->willReturn('Sample_Module');
$this->packageInfo->expects($this->exactly(2))
->method('getPackageName')
->willReturn($this->componentData['magento/sample-module-one']['name']);
$this->packageInfo->expects($this->exactly(2))
->method('getVersion')
->willReturn($this->componentData['magento/sample-module-one']['version']);
$this->enabledModuleListMock->expects($this->once())
->method('has')
->willReturn(true);
$this->composerInformationMock->expects($this->once())
->method('getInstalledMagentoPackages')
->willReturn($this->componentData);
$this->composerInformationMock->expects($this->once())
->method('isPackageInComposerJson')
->willReturn(true);
$this->packagesAuth->expects($this->once())->method('getAuthJsonData')->willReturn([
'username' => 'someusername', 'password' => 'somepassword'
]);
$this->packagesData->expects($this->once())
->method('syncPackagesData')
->willReturn($this->lastSyncData);
$jsonModel = $this->controller->componentsAction();
$this->assertInstanceOf('Zend\View\Model\JsonModel', $jsonModel);
$variables = $jsonModel->getVariables();
$this->assertArrayHasKey('success', $variables);
$this->assertTrue($variables['success']);
$expected = [[
'name' => 'magento/sample-module-one',
'type' => 'magento2-module',
'version' => '1.0.0',
'update' => false,
'uninstall' => true,
'vendor' => 'magento',
'moduleName' => 'Sample_Module',
'enable' => true,
'disable' => false
]];
$this->assertEquals($expected, $variables['components']);
$this->assertArrayHasKey('total', $variables);
$this->assertEquals(1, $variables['total']);
$this->assertEquals($this->lastSyncData, $variables['lastSyncData']);
}
public function testSyncAction()
{
$this->packagesData->expects($this->once())
->method('syncPackagesData')
->willReturn($this->lastSyncData);
$jsonModel = $this->controller->syncAction();
$this->assertInstanceOf('Zend\View\Model\JsonModel', $jsonModel);
$variables = $jsonModel->getVariables();
$this->assertArrayHasKey('success', $variables);
$this->assertTrue($variables['success']);
$this->assertEquals($this->lastSyncData, $variables['lastSyncData']);
}
}