From 27972acd81a0df5ea58d667de49ebe9b508d40c0 Mon Sep 17 00:00:00 2001
From: Oleksandr Karpenko <okarpenko@ebay.com>
Date: Wed, 21 Oct 2015 11:17:13 +0300
Subject: [PATCH] MAGETWO-44017: Exception appears when user opens scheduled
 import export without installed imort/export

---
 .../Framework/Module/DependencyChecker.php     |  3 ++-
 .../Module/Test/Unit/DependencyCheckerTest.php | 18 ++++++++++++++----
 .../Module/Test/Unit/PackageInfoTest.php       |  5 +++++
 3 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/lib/internal/Magento/Framework/Module/DependencyChecker.php b/lib/internal/Magento/Framework/Module/DependencyChecker.php
index e84e2b99a11..71c811daf3c 100644
--- a/lib/internal/Magento/Framework/Module/DependencyChecker.php
+++ b/lib/internal/Magento/Framework/Module/DependencyChecker.php
@@ -99,7 +99,8 @@ class DependencyChecker
             $dependenciesMissing = [];
             $paths = $this->graph->findPathsToReachableNodes($moduleName, $graphMode);
             $modules = array_merge(
-                array_keys($this->fullModuleList), $this->packageInfo->getNonExistingDependencies()
+                array_keys($this->fullModuleList),
+                $this->packageInfo->getNonExistingDependencies()
             );
             foreach ($modules as $module) {
                 if (isset($paths[$module])) {
diff --git a/lib/internal/Magento/Framework/Module/Test/Unit/DependencyCheckerTest.php b/lib/internal/Magento/Framework/Module/Test/Unit/DependencyCheckerTest.php
index eb09d4a41ac..0d7774d8dda 100644
--- a/lib/internal/Magento/Framework/Module/Test/Unit/DependencyCheckerTest.php
+++ b/lib/internal/Magento/Framework/Module/Test/Unit/DependencyCheckerTest.php
@@ -70,10 +70,12 @@ class DependencyCheckerTest extends \PHPUnit_Framework_TestCase
 
     public function testCheckDependenciesWhenDisableModules()
     {
-        $this->listMock
-            ->expects($this->any())
+        $this->listMock->expects($this->any())
             ->method('getNames')
             ->will($this->returnValue(['A', 'B', 'C', 'D', 'E']));
+        $this->packageInfoMock->expects($this->atLeastOnce())
+            ->method('getNonExistingDependencies')
+            ->willReturn([]);
         $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
 
         $actual = $this->checker->checkDependenciesWhenDisableModules(['B', 'D']);
@@ -83,6 +85,9 @@ class DependencyCheckerTest extends \PHPUnit_Framework_TestCase
 
     public function testCheckDependenciesWhenDisableModulesWithCurEnabledModules()
     {
+        $this->packageInfoMock->expects($this->atLeastOnce())
+            ->method('getNonExistingDependencies')
+            ->willReturn([]);
         $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
 
         $actual = $this->checker->checkDependenciesWhenDisableModules(['B', 'D'], ['C', 'D', 'E']);
@@ -92,10 +97,12 @@ class DependencyCheckerTest extends \PHPUnit_Framework_TestCase
 
     public function testCheckDependenciesWhenEnableModules()
     {
-        $this->listMock
-            ->expects($this->any())
+        $this->listMock->expects($this->any())
             ->method('getNames')
             ->will($this->returnValue(['C']));
+        $this->packageInfoMock->expects($this->atLeastOnce())
+            ->method('getNonExistingDependencies')
+            ->willReturn([]);
         $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
         $actual = $this->checker->checkDependenciesWhenEnableModules(['B', 'D']);
         $expected = [
@@ -107,6 +114,9 @@ class DependencyCheckerTest extends \PHPUnit_Framework_TestCase
 
     public function testCheckDependenciesWhenEnableModulesWithCurEnabledModules()
     {
+        $this->packageInfoMock->expects($this->atLeastOnce())
+            ->method('getNonExistingDependencies')
+            ->willReturn([]);
         $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
         $actual = $this->checker->checkDependenciesWhenEnableModules(['B', 'D'], ['C']);
         $expected = [
diff --git a/lib/internal/Magento/Framework/Module/Test/Unit/PackageInfoTest.php b/lib/internal/Magento/Framework/Module/Test/Unit/PackageInfoTest.php
index 8a2512c485f..4328b62c0c6 100644
--- a/lib/internal/Magento/Framework/Module/Test/Unit/PackageInfoTest.php
+++ b/lib/internal/Magento/Framework/Module/Test/Unit/PackageInfoTest.php
@@ -57,6 +57,11 @@ class PackageInfoTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals('C', $this->packageInfo->getModuleName('c'));
         $this->assertEquals('D', $this->packageInfo->getModuleName('d'));
         $this->assertEquals('E', $this->packageInfo->getModuleName('e'));
+        $this->assertEquals(
+            'Magento_TestModuleName',
+            $this->packageInfo->getModuleName('magento/module-test-module-name')
+        );
+        $this->assertArrayHasKey('Magento_TestModuleName', $this->packageInfo->getNonExistingDependencies());
     }
 
     public function testGetPackageName()
-- 
GitLab