<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Setup\Test\Unit\Model\Grid; use Magento\Framework\Composer\ComposerInformation; use Magento\Setup\Model\Grid\Extension; use Magento\Setup\Model\PackagesData; use PHPUnit_Framework_MockObject_MockObject as MockObject; /** * Class ExtensionTest */ class ExtensionTest extends \PHPUnit\Framework\TestCase { /** * @var ComposerInformation|MockObject */ private $composerInformationMock; /** * @var PackagesData|MockObject */ private $packagesDataMock; /** * Extension * * @var Extension */ private $model; public function setUp() { $this->composerInformationMock = $this->getMockBuilder(ComposerInformation::class) ->disableOriginalConstructor() ->getMock(); $this->packagesDataMock = $this->getMockBuilder(PackagesData::class) ->disableOriginalConstructor() ->getMock(); $this->model = new Extension( $this->composerInformationMock, $this->packagesDataMock ); } public function testGetList() { $this->composerInformationMock->expects($this->any()) ->method('isPackageInComposerJson') ->willReturn(true); $this->packagesDataMock->expects($this->once()) ->method('getInstalledPackages') ->willReturn( [ 'magento/package-1' => [ 'name' => 'magento/package-1', 'type' => 'magento2-module', 'package_title' => 'packageTitle', 'package_type' => 'packageType', 'package_link' => 'http://example.com', 'version' => '1.0.0' ], 'magento/package-2' => [ 'name' => 'magento/package-2', 'type' => 'magento2-module', 'package_title' => 'packageTitle', 'package_type' => 'packageType', 'package_link' => 'http://example.com', 'version' => '1.0.1' ], ] ); $this->packagesDataMock->expects($this->once()) ->method('getPackagesForUpdate') ->willReturn( [ 'magento/package-1' => [] ] ); $expected = [ [ 'name' => 'magento/package-1', 'type' => 'magento2-module', 'package_title' => 'packageTitle', 'package_type' => 'packageType', 'version' => '1.0.0', 'update' => true, 'uninstall' => true, 'vendor' => 'Magento', 'package_link' => 'http://example.com' ], [ 'name' => 'magento/package-2', 'type' => 'magento2-module', 'package_title' => 'packageTitle', 'package_type' => 'packageType', 'version' => '1.0.1', 'update' => false, 'uninstall' => true, 'vendor' => 'Magento', 'package_link' => 'http://example.com' ], ]; $this->assertEquals($expected, $this->model->getList()); } }