Merge pull request #15881 from civicrm/5.20
[civicrm-core.git] / tests / phpunit / CRM / Extension / ManagerTest.php
index 53afb936c2d9134549d3a6fa9d5f028a48300e96..f7f58e7040cd04c403ee0733dcaaa343d5f11919 100644 (file)
@@ -1,28 +1,12 @@
 <?php
 /*
  +--------------------------------------------------------------------+
-| CiviCRM version 5                                                  |
-+--------------------------------------------------------------------+
-| Copyright CiviCRM LLC (c) 2004-2019                                |
-+--------------------------------------------------------------------+
-| This file is a part of CiviCRM.                                    |
-|                                                                    |
-| CiviCRM is free software; you can copy, modify, and distribute it  |
-| under the terms of the GNU Affero General Public License           |
-| Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
-|                                                                    |
-| CiviCRM is distributed in the hope that it will be useful, but     |
-| WITHOUT ANY WARRANTY; without even the implied warranty of         |
-| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
-| See the GNU Affero General Public License for more details.        |
-|                                                                    |
-| You should have received a copy of the GNU Affero General Public   |
-| License and the CiviCRM Licensing Exception along                  |
-| with this program; if not, contact CiviCRM LLC                     |
-| at info[AT]civicrm[DOT]org. If you have questions about the        |
-| GNU Affero General Public License or the licensing of CiviCRM,     |
-| see the CiviCRM license FAQ at http://civicrm.org/licensing        |
-+--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
  */
 
 /**
@@ -53,10 +37,10 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
     $testingTypeManager->expects($this->never())
       ->method('onPreInstall');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::OTHER_TESTING_TYPE => $testingTypeManager,
-    ));
-    $manager->install(array('test.foo.bar'));
+    ]);
+    $manager->install(['test.foo.bar']);
   }
 
   /**
@@ -69,9 +53,9 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function testInstall_Disable_Uninstall() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
 
@@ -81,7 +65,7 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->exactly(2))
       ->method('onPostInstall');
-    $manager->install(array('test.whiz.bang', 'test.foo.bar'));
+    $manager->install(['test.whiz.bang', 'test.foo.bar']);
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('installed', $manager->getStatus('test.whiz.bang'));
 
@@ -91,9 +75,10 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->once())
       ->method('onPostDisable');
-    $manager->disable(array('test.foo.bar'));
+    $manager->disable(['test.foo.bar']);
     $this->assertEquals('disabled', $manager->getStatus('test.foo.bar'));
-    $this->assertEquals('installed', $manager->getStatus('test.whiz.bang')); // no side-effect
+    // no side-effect
+    $this->assertEquals('installed', $manager->getStatus('test.whiz.bang'));
 
     $testingTypeManager
       ->expects($this->once())
@@ -101,9 +86,10 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->once())
       ->method('onPostUninstall');
-    $manager->uninstall(array('test.foo.bar'));
+    $manager->uninstall(['test.foo.bar']);
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.bar'));
-    $this->assertEquals('installed', $manager->getStatus('test.whiz.bang')); // no side-effect
+    // no side-effect
+    $this->assertEquals('installed', $manager->getStatus('test.whiz.bang'));
   }
 
   /**
@@ -114,35 +100,35 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function test_InstallAuto_DisableDownstream_UninstallDownstream() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.downstream'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
 
     $testingTypeManager->expects($this->exactly(2))->method('onPreInstall');
     $testingTypeManager->expects($this->exactly(2))->method('onPostInstall');
-    $this->assertEquals(array('test.foo.bar', 'test.foo.downstream'),
-      $manager->findInstallRequirements(array('test.foo.downstream')));
+    $this->assertEquals(['test.foo.bar', 'test.foo.downstream'],
+      $manager->findInstallRequirements(['test.foo.downstream']));
     $manager->install(
-      $manager->findInstallRequirements(array('test.foo.downstream')));
+      $manager->findInstallRequirements(['test.foo.downstream']));
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('installed', $manager->getStatus('test.foo.downstream'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
 
     $testingTypeManager->expects($this->once())->method('onPreDisable');
     $testingTypeManager->expects($this->once())->method('onPostDisable');
-    $this->assertEquals(array('test.foo.downstream'),
-      $manager->findDisableRequirements(array('test.foo.downstream')));
-    $manager->disable(array('test.foo.downstream'));
+    $this->assertEquals(['test.foo.downstream'],
+      $manager->findDisableRequirements(['test.foo.downstream']));
+    $manager->disable(['test.foo.downstream']);
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('disabled', $manager->getStatus('test.foo.downstream'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
 
     $testingTypeManager->expects($this->once())->method('onPreUninstall');
     $testingTypeManager->expects($this->once())->method('onPostUninstall');
-    $manager->uninstall(array('test.foo.downstream'));
+    $manager->uninstall(['test.foo.downstream']);
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.downstream'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
@@ -156,19 +142,19 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function testInstallAuto_Twice() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.downstream'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
 
     $testingTypeManager->expects($this->exactly(2))->method('onPreInstall');
     $testingTypeManager->expects($this->exactly(2))->method('onPostInstall');
-    $this->assertEquals(array('test.foo.bar', 'test.foo.downstream'),
-      $manager->findInstallRequirements(array('test.foo.downstream')));
+    $this->assertEquals(['test.foo.bar', 'test.foo.downstream'],
+      $manager->findInstallRequirements(['test.foo.downstream']));
     $manager->install(
-      $manager->findInstallRequirements(array('test.foo.downstream')));
+      $manager->findInstallRequirements(['test.foo.downstream']));
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('installed', $manager->getStatus('test.foo.downstream'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
@@ -177,7 +163,7 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager->expects($this->exactly(0))->method('onPreInstall');
     $testingTypeManager->expects($this->exactly(0))->method('onPostInstall');
     $manager->install(
-      $manager->findInstallRequirements(array('test.foo.downstream')));
+      $manager->findInstallRequirements(['test.foo.downstream']));
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('installed', $manager->getStatus('test.foo.downstream'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
@@ -186,30 +172,30 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function test_InstallAuto_DisableUpstream() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.downstream'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
 
     $testingTypeManager->expects($this->exactly(2))->method('onPreInstall');
     $testingTypeManager->expects($this->exactly(2))->method('onPostInstall');
-    $this->assertEquals(array('test.foo.bar', 'test.foo.downstream'),
-      $manager->findInstallRequirements(array('test.foo.downstream')));
+    $this->assertEquals(['test.foo.bar', 'test.foo.downstream'],
+      $manager->findInstallRequirements(['test.foo.downstream']));
     $manager->install(
-      $manager->findInstallRequirements(array('test.foo.downstream')));
+      $manager->findInstallRequirements(['test.foo.downstream']));
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('installed', $manager->getStatus('test.foo.downstream'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
 
     $testingTypeManager->expects($this->never())->method('onPreDisable');
     $testingTypeManager->expects($this->never())->method('onPostDisable');
-    $this->assertEquals(array('test.foo.downstream', 'test.foo.bar'),
-      $manager->findDisableRequirements(array('test.foo.bar')));
+    $this->assertEquals(['test.foo.downstream', 'test.foo.bar'],
+      $manager->findDisableRequirements(['test.foo.bar']));
 
     try {
-      $manager->disable(array('test.foo.bar'));
+      $manager->disable(['test.foo.bar']);
       $this->fail('Expected disable to fail due to dependency');
     }
     catch (CRM_Extension_Exception $e) {
@@ -222,7 +208,6 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
   }
 
-
   /**
    * Install an extension and then harshly remove the underlying source.
    * Subseuently disable and uninstall.
@@ -230,12 +215,12 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function testInstall_DirtyRemove_Disable_Uninstall() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.bar'));
 
-    $manager->install(array('test.foo.bar'));
+    $manager->install(['test.foo.bar']);
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
 
     $this->assertTrue(file_exists("{$this->basedir}/weird/foobar/info.xml"));
@@ -250,7 +235,7 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->once())
       ->method('onPostDisable');
-    $manager->disable(array('test.foo.bar'));
+    $manager->disable(['test.foo.bar']);
     $this->assertEquals('disabled-missing', $manager->getStatus('test.foo.bar'));
 
     $testingTypeManager
@@ -259,7 +244,7 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->once())
       ->method('onPostUninstall');
-    $manager->uninstall(array('test.foo.bar'));
+    $manager->uninstall(['test.foo.bar']);
     $this->assertEquals('unknown', $manager->getStatus('test.foo.bar'));
   }
 
@@ -269,9 +254,9 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function testInstall_Disable_Enable() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
 
@@ -281,7 +266,7 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->exactly(2))
       ->method('onPostInstall');
-    $manager->install(array('test.whiz.bang', 'test.foo.bar'));
+    $manager->install(['test.whiz.bang', 'test.foo.bar']);
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('installed', $manager->getStatus('test.whiz.bang'));
 
@@ -291,7 +276,7 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->once())
       ->method('onPostDisable');
-    $manager->disable(array('test.foo.bar'));
+    $manager->disable(['test.foo.bar']);
     $this->assertEquals('disabled', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('installed', $manager->getStatus('test.whiz.bang'));
 
@@ -301,7 +286,7 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->once())
       ->method('onPostEnable');
-    $manager->enable(array('test.foo.bar'));
+    $manager->enable(['test.foo.bar']);
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
     $this->assertEquals('installed', $manager->getStatus('test.whiz.bang'));
   }
@@ -312,9 +297,9 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function testInstall_Disable_Install() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.bar'));
 
     $testingTypeManager
@@ -323,7 +308,7 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->once())
       ->method('onPostInstall');
-    $manager->install(array('test.foo.bar'));
+    $manager->install(['test.foo.bar']);
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
 
     $testingTypeManager
@@ -332,7 +317,7 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->once())
       ->method('onPostDisable');
-    $manager->disable(array('test.foo.bar'));
+    $manager->disable(['test.foo.bar']);
     $this->assertEquals('disabled', $manager->getStatus('test.foo.bar'));
 
     $testingTypeManager
@@ -341,7 +326,8 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->once())
       ->method('onPostEnable');
-    $manager->install(array('test.foo.bar')); // install() instead of enable()
+    // install() instead of enable()
+    $manager->install(['test.foo.bar']);
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
   }
 
@@ -351,9 +337,9 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function testEnableBare() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('uninstalled', $manager->getStatus('test.foo.bar'));
 
     $testingTypeManager
@@ -368,7 +354,8 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager
       ->expects($this->never())
       ->method('onPostEnable');
-    $manager->enable(array('test.foo.bar')); // enable not install
+    // enable not install
+    $manager->enable(['test.foo.bar']);
     $this->assertEquals('installed', $manager->getStatus('test.foo.bar'));
   }
 
@@ -380,9 +367,9 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
     $testingTypeManager->expects($this->never())
       ->method('onPreInstall');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('unknown', $manager->getStatus('test.foo.bar.whiz.bang'));
   }
 
@@ -392,18 +379,20 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function testReplace_Unknown() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('unknown', $manager->getStatus('test.newextension'));
 
     $this->download = $this->_createDownload('test.newextension', 'newextension');
 
     $testingTypeManager
-      ->expects($this->never())// no data to replace
+    // no data to replace
+      ->expects($this->never())
       ->method('onPreReplace');
     $testingTypeManager
-      ->expects($this->never())// no data to replace
+    // no data to replace
+      ->expects($this->never())
       ->method('onPostReplace');
     $manager->replace($this->download);
     $this->assertEquals('uninstalled', $manager->getStatus('test.newextension'));
@@ -419,19 +408,21 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function testReplace_Uninstalled() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
     $this->assertEquals('oddball', $this->mapper->keyToInfo('test.whiz.bang')->file);
 
     $this->download = $this->_createDownload('test.whiz.bang', 'newextension');
 
     $testingTypeManager
-      ->expects($this->never())// no data to replace
+    // no data to replace
+      ->expects($this->never())
       ->method('onPreReplace');
     $testingTypeManager
-      ->expects($this->never())// no data to replace
+    // no data to replace
+      ->expects($this->never())
       ->method('onPostReplace');
     $manager->replace($this->download);
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
@@ -451,13 +442,13 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function testReplace_Installed() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
     $this->assertEquals('oddball', $this->mapper->keyToInfo('test.whiz.bang')->file);
 
-    $manager->install(array('test.whiz.bang'));
+    $manager->install(['test.whiz.bang']);
     $this->assertEquals('installed', $manager->getStatus('test.whiz.bang'));
     $this->assertEquals('oddball', $this->mapper->keyToInfo('test.whiz.bang')->file);
     $this->assertDBQuery('oddball', 'SELECT file FROM civicrm_extension WHERE full_name ="test.whiz.bang"');
@@ -489,13 +480,13 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
   public function testReplace_InstalledMissing() {
     $mockFunction = $this->mockMethod;
     $testingTypeManager = $this->$mockFunction('CRM_Extension_Manager_Interface');
-    $manager = $this->_createManager(array(
+    $manager = $this->_createManager([
       self::TESTING_TYPE => $testingTypeManager,
-    ));
+    ]);
 
     // initial installation
     $this->assertEquals('uninstalled', $manager->getStatus('test.whiz.bang'));
-    $manager->install(array('test.whiz.bang'));
+    $manager->install(['test.whiz.bang']);
     $this->assertEquals('installed', $manager->getStatus('test.whiz.bang'));
 
     // dirty remove
@@ -552,7 +543,7 @@ class CRM_Extension_ManagerTest extends CiviUnitTestCase {
     file_put_contents("$basedir/weird/downstream/info.xml", "<extension key='test.foo.downstream' type='" . self::TESTING_TYPE . "'><file>oddball</file><requires><ext>test.foo.bar</ext></requires></extension>");
     // not needed for now // file_put_contents("$basedir/weird/downstream/oddball.php", "<?php\n");
     $c = new CRM_Extension_Container_Basic($basedir, 'http://example/basedir', $cache, $cacheKey);
-    return array($basedir, $c);
+    return [$basedir, $c];
   }
 
   /**