public function testComponentsAction() { $this->composerInformation->expects($this->once())->method('getInstalledMagentoPackages')->willReturn(['magento/sample-module1' => ['name' => 'magento/sample-module1', 'type' => 'magento2-module', 'version' => '1.0.0']]); $this->composerInformation->expects($this->once())->method('isPackageInComposerJson')->willReturn(true); $this->infoCommand->expects($this->once())->method('run')->willReturn(['versions' => '3.0.0, 2.0.0', 'current_version' => '1.0.0', 'new_versions' => ['3.0.0', '2.0.0']]); $jsonModel = $this->controller->componentsAction(); $this->assertInstanceOf('Zend\\View\\Model\\JsonModel', $jsonModel); $variables = $jsonModel->getVariables(); $this->assertArrayHasKey('responseType', $variables); $this->assertEquals(ResponseTypeInterface::RESPONSE_TYPE_SUCCESS, $variables['responseType']); $this->assertArrayHasKey('components', $variables); $expected = ['0' => ['name' => 'magento/sample-module1', 'type' => 'magento2-module', 'version' => '1.0.0', 'vendor' => 'magento', 'updates' => [['id' => '3.0.0', 'name' => '3.0.0 (latest)'], ['id' => '2.0.0', 'name' => '2.0.0'], ['id' => '1.0.0', 'name' => '1.0.0 (current)']], 'dropdownId' => 'dd_magento/sample-module1', 'checkboxId' => 'cb_magento/sample-module1']]; $this->assertEquals($expected, $variables['components']); $this->assertArrayHasKey('total', $variables); $this->assertEquals(1, $variables['total']); }
/** * @param string $ceCurrentVersion * @param array $expectedResult * * @dataProvider getAllowedEnterpriseVersionsDataProvider */ public function testGetAllowedEnterpriseVersions($ceCurrentVersion, $expectedResult) { $this->composerAppFactory->expects($this->once()) ->method('createInfoCommand') ->willReturn($this->infoCommand); $this->systemPackage = new SystemPackage($this->composerAppFactory, $this->composerInformation); $this->infoCommand->expects($this->once()) ->method('run') ->with('magento/product-enterprise-edition') ->willReturn(['available_versions' => ['1.0.0', '1.0.1', '1.0.2']]); $require = $this->getMock('\Composer\Package\Link', [], [], '', false); $constraintMock = $this->getMock('\Composer\Package\LinkConstraint\VersionConstraint', [], [], '', false); $constraintMock->expects($this->any())->method('getPrettyString') ->willReturn('1.0.1'); $require->expects($this->any()) ->method('getConstraint') ->willReturn($constraintMock); $this->composerInformation->expects($this->any()) ->method('getPackageRequirements') ->willReturn(['magento/product-community-edition' => $require]); $this->assertEquals( $expectedResult, $this->systemPackage->getAllowedEnterpriseVersions($ceCurrentVersion) ); }
/** * @param string $currentCE * @return array */ public function getAllowedEnterpriseVersions($currentCE) { $result = []; $enterpriseVersions = $this->infoCommand->run('magento/product-enterprise-edition'); $eeVersions = []; $maxVersion = ''; if (is_array($enterpriseVersions) && array_key_exists('available_versions', $enterpriseVersions)) { $enterpriseVersions = $this->sortVersions($enterpriseVersions); if (isset($enterpriseVersions['available_versions'][0])) { $maxVersion = $enterpriseVersions['available_versions'][0]; } $eeVersions = $this->filterEeVersions($currentCE, $enterpriseVersions, $maxVersion); } if (!empty($eeVersions)) { $result[] = ['package' => 'magento/product-enterprise-edition', 'versions' => $eeVersions]; } return $result; }
/** * Get Components from composer info command * * @return JsonModel * @throws \RuntimeException */ public function componentsAction() { try { $components = $this->composerInformation->getInstalledMagentoPackages(); foreach ($components as $component) { if (!$this->composerInformation->isPackageInComposerJson($component['name'])) { unset($components[$component['name']]); continue; } $componentNameParts = explode('/', $component['name']); $packageInfo = $this->infoCommand->run($component['name']); if (!$packageInfo) { throw new \RuntimeException('Package info not found for ' . $component['name']); } if ($packageInfo[InfoCommand::NEW_VERSIONS]) { $currentVersion = $packageInfo[InfoCommand::CURRENT_VERSION]; $components[$component['name']]['version'] = $currentVersion; $versions = []; foreach ($packageInfo[InfoCommand::NEW_VERSIONS] as $version) { $versions[] = ['id' => $version, 'name' => $version]; } $versions[] = ['id' => $packageInfo[InfoCommand::CURRENT_VERSION], 'name' => $packageInfo[InfoCommand::CURRENT_VERSION]]; $versions[0]['name'] .= ' (latest)'; $versions[count($versions) - 1]['name'] .= ' (current)'; $components[$component['name']]['vendor'] = $componentNameParts[0]; $components[$component['name']]['updates'] = $versions; $components[$component['name']]['dropdownId'] = 'dd_' . $component['name']; $components[$component['name']]['checkboxId'] = 'cb_' . $component['name']; } else { unset($components[$component['name']]); } } return new JsonModel(['components' => array_values($components), 'total' => count($components), 'responseType' => ResponseTypeInterface::RESPONSE_TYPE_SUCCESS]); } catch (\Exception $e) { return new JsonModel(['responseType' => ResponseTypeInterface::RESPONSE_TYPE_ERROR]); } }
/** * @expectedException \RuntimeException * @expectedExceptionMessage */ public function testRunException() { $this->application->expects($this->at(1))->method('runComposerCommand')->willThrowException(new \RuntimeException($this->errorMessage)); $this->infoCommand->expects($this->once())->method('run')->willReturn($this->packageInfo); $this->requireUpdateDryRunCommand->run(['3rdp/e 1.2.0'], ''); }
public function testRunInstalled() { $this->application->expects($this->once())->method('runComposerCommand')->willReturn($this->installedOutput); $result = $this->infoCommand->run('3rdp/a', true); $this->assertEquals(['name' => '3rdp/a', 'descrip.' => 'Plugin project A', 'versions' => '* 1.0.0', 'keywords' => '', 'type' => 'library', 'names' => '3rdp/a', 'current_version' => '1.0.0', 'available_versions' => [], 'new_versions' => []], $result); }