コード例 #1
0
 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']);
 }
コード例 #2
0
    /**
     * @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)
        );
    }
コード例 #3
0
 /**
  * @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;
 }
コード例 #4
0
 /**
  * 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]);
     }
 }
コード例 #5
0
 /**
  * @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'], '');
 }
コード例 #6
0
ファイル: InfoCommandTest.php プロジェクト: magento/composer
 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);
 }