From cdf2ba9d15239068ea2218778173a4f0613490ba Mon Sep 17 00:00:00 2001 From: Rich Lott / Artful Robot <forums@artfulrobot.uk> Date: Sat, 23 Nov 2019 08:47:09 +0000 Subject: [PATCH] Fix tests --- CRM/Dataprocessor/DAO/DataProcessor.php | 4 +- CRM/Dataprocessor/DAO/DataProcessorField.php | 5 +- CRM/Dataprocessor/DAO/DataProcessorFilter.php | 5 +- CRM/Dataprocessor/DAO/DataProcessorOutput.php | 5 +- CRM/Dataprocessor/DAO/DataProcessorSource.php | 5 +- Civi/DataProcessor/Output/UIOutputHelper.php | 8 +++ dataprocessor.civix.php | 51 ++++++++++--------- .../Dataprocessor/ImportDataProcessorTest.php | 4 +- tests/phpunit/CRM/Dataprocessor/TestBase.php | 5 +- 9 files changed, 56 insertions(+), 36 deletions(-) diff --git a/CRM/Dataprocessor/DAO/DataProcessor.php b/CRM/Dataprocessor/DAO/DataProcessor.php index 0a2da39a..e7cf9657 100644 --- a/CRM/Dataprocessor/DAO/DataProcessor.php +++ b/CRM/Dataprocessor/DAO/DataProcessor.php @@ -4,9 +4,9 @@ * @package CRM * @copyright CiviCRM LLC (c) 2004-2019 * - * Generated from /buildkit/build/search/web/sites/all/modules/civicrm/tools/extensions/dataprocessor/xml/schema/CRM/Dataprocessor/DataProcessor.xml + * Generated from /buildkit/build/dmaster/sites/default/files/civicrm/ext/dataprocessor/xml/schema/CRM/Dataprocessor/DataProcessor.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:d6907bd0c85e77ce033cc7aef3d0aa3a) + * (GenCodeChecksum:0963e22b20916c48e9e2f9ab6a2b3845) */ /** diff --git a/CRM/Dataprocessor/DAO/DataProcessorField.php b/CRM/Dataprocessor/DAO/DataProcessorField.php index d4c03939..0bf75bcf 100644 --- a/CRM/Dataprocessor/DAO/DataProcessorField.php +++ b/CRM/Dataprocessor/DAO/DataProcessorField.php @@ -4,9 +4,9 @@ * @package CRM * @copyright CiviCRM LLC (c) 2004-2019 * - * Generated from /buildkit/build/search/web/sites/all/modules/civicrm/tools/extensions/dataprocessor/xml/schema/CRM/Dataprocessor/DataProcessorField.xml + * Generated from /buildkit/build/dmaster/sites/default/files/civicrm/ext/dataprocessor/xml/schema/CRM/Dataprocessor/DataProcessorField.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:d274dcffe6113de94c614b35f32dc06b) + * (GenCodeChecksum:d5389a48546e169033f2adf9c1997062) */ /** @@ -120,6 +120,7 @@ class CRM_Dataprocessor_DAO_DataProcessorField extends CRM_Core_DAO { 'entity' => 'DataProcessorField', 'bao' => 'CRM_Dataprocessor_DAO_DataProcessorField', 'localizable' => 0, + 'FKClassName' => 'CRM_Dataprocessor_DAO_DataProcessor', ], 'weight' => [ 'name' => 'weight', diff --git a/CRM/Dataprocessor/DAO/DataProcessorFilter.php b/CRM/Dataprocessor/DAO/DataProcessorFilter.php index f8db5256..60fdb1dd 100644 --- a/CRM/Dataprocessor/DAO/DataProcessorFilter.php +++ b/CRM/Dataprocessor/DAO/DataProcessorFilter.php @@ -4,9 +4,9 @@ * @package CRM * @copyright CiviCRM LLC (c) 2004-2019 * - * Generated from /buildkit/build/search/web/sites/all/modules/civicrm/tools/extensions/dataprocessor/xml/schema/CRM/Dataprocessor/DataProcessorFilter.xml + * Generated from /buildkit/build/dmaster/sites/default/files/civicrm/ext/dataprocessor/xml/schema/CRM/Dataprocessor/DataProcessorFilter.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:24f21f0d15aa13b3b28792ad454e68e8) + * (GenCodeChecksum:5811dcf05d6329b04f426920538c3661) */ /** @@ -135,6 +135,7 @@ class CRM_Dataprocessor_DAO_DataProcessorFilter extends CRM_Core_DAO { 'entity' => 'DataProcessorFilter', 'bao' => 'CRM_Dataprocessor_DAO_DataProcessorFilter', 'localizable' => 0, + 'FKClassName' => 'CRM_Dataprocessor_DAO_DataProcessor', ], 'weight' => [ 'name' => 'weight', diff --git a/CRM/Dataprocessor/DAO/DataProcessorOutput.php b/CRM/Dataprocessor/DAO/DataProcessorOutput.php index 9651e89a..aceb1505 100644 --- a/CRM/Dataprocessor/DAO/DataProcessorOutput.php +++ b/CRM/Dataprocessor/DAO/DataProcessorOutput.php @@ -4,9 +4,9 @@ * @package CRM * @copyright CiviCRM LLC (c) 2004-2019 * - * Generated from /buildkit/build/search/web/sites/all/modules/civicrm/tools/extensions/dataprocessor/xml/schema/CRM/Dataprocessor/DataProcessorOutput.xml + * Generated from /buildkit/build/dmaster/sites/default/files/civicrm/ext/dataprocessor/xml/schema/CRM/Dataprocessor/DataProcessorOutput.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:b084899f5823b297a409b16cc41bdf7a) + * (GenCodeChecksum:811c729e9dd8df469a391ef9392ee624) */ /** @@ -125,6 +125,7 @@ class CRM_Dataprocessor_DAO_DataProcessorOutput extends CRM_Core_DAO { 'entity' => 'DataProcessorOutput', 'bao' => 'CRM_Dataprocessor_DAO_DataProcessorOutput', 'localizable' => 0, + 'FKClassName' => 'CRM_Dataprocessor_DAO_DataProcessor', ], 'type' => [ 'name' => 'type', diff --git a/CRM/Dataprocessor/DAO/DataProcessorSource.php b/CRM/Dataprocessor/DAO/DataProcessorSource.php index 5aab7945..c9aa0ccf 100644 --- a/CRM/Dataprocessor/DAO/DataProcessorSource.php +++ b/CRM/Dataprocessor/DAO/DataProcessorSource.php @@ -4,9 +4,9 @@ * @package CRM * @copyright CiviCRM LLC (c) 2004-2019 * - * Generated from /buildkit/build/search/web/sites/all/modules/civicrm/tools/extensions/dataprocessor/xml/schema/CRM/Dataprocessor/DataProcessorSource.xml + * Generated from /buildkit/build/dmaster/sites/default/files/civicrm/ext/dataprocessor/xml/schema/CRM/Dataprocessor/DataProcessorSource.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:8b610b28b2023badbccde15e8fa1010d) + * (GenCodeChecksum:c3767f626a9a361ecebe5385f6653d6f) */ /** @@ -130,6 +130,7 @@ class CRM_Dataprocessor_DAO_DataProcessorSource extends CRM_Core_DAO { 'entity' => 'DataProcessorSource', 'bao' => 'CRM_Dataprocessor_DAO_DataProcessorSource', 'localizable' => 0, + 'FKClassName' => 'CRM_Dataprocessor_DAO_DataProcessor', ], 'weight' => [ 'name' => 'weight', diff --git a/Civi/DataProcessor/Output/UIOutputHelper.php b/Civi/DataProcessor/Output/UIOutputHelper.php index f42d17a2..9b98dcd6 100644 --- a/Civi/DataProcessor/Output/UIOutputHelper.php +++ b/Civi/DataProcessor/Output/UIOutputHelper.php @@ -66,6 +66,10 @@ class UIOutputHelper { */ public static function preHook($op, $objectName, $id, &$params) { if ($objectName == 'DataProcessorOutput') { + // Disable this hook in unit tests because the menu rebuild it causes breaks transactions. + if (CIVICRM_UF === 'UnitTests') { + return; + } if ($op == 'delete') { $output = civicrm_api3('DataProcessorOutput', 'getsingle', ['id' => $id]); self::removeOutputFromNavigation($output['configuration']); @@ -141,6 +145,10 @@ class UIOutputHelper { if ($objectName != 'DataProcessorOutput') { return; } + // Disable this hook in unit tests because the menu rebuild it causes breaks transactions. + if (CIVICRM_UF === 'UnitTests') { + return; + } if (self::$rebuildMenu) { // Rebuild the CiviCRM Menu (which holds all the pages) diff --git a/dataprocessor.civix.php b/dataprocessor.civix.php index ca12f343..950e7f54 100644 --- a/dataprocessor.civix.php +++ b/dataprocessor.civix.php @@ -24,9 +24,9 @@ class CRM_Dataprocessor_ExtensionUtil { * Translated text. * @see ts */ - public static function ts($text, $params = array()) { + public static function ts($text, $params = []) { if (!array_key_exists('domain', $params)) { - $params['domain'] = array(self::LONG_NAME, NULL); + $params['domain'] = [self::LONG_NAME, NULL]; } return ts($text, $params); } @@ -100,7 +100,7 @@ function _dataprocessor_civix_civicrm_config(&$config = NULL) { array_unshift($template->template_dir, $extDir); } else { - $template->template_dir = array($extDir, $template->template_dir); + $template->template_dir = [$extDir, $template->template_dir]; } $include_path = $extRoot . PATH_SEPARATOR . get_include_path(); @@ -140,7 +140,7 @@ function _dataprocessor_civix_civicrm_install() { function _dataprocessor_civix_civicrm_postInstall() { _dataprocessor_civix_civicrm_config(); if ($upgrader = _dataprocessor_civix_upgrader()) { - if (is_callable(array($upgrader, 'onPostInstall'))) { + if (is_callable([$upgrader, 'onPostInstall'])) { $upgrader->onPostInstall(); } } @@ -166,7 +166,7 @@ function _dataprocessor_civix_civicrm_uninstall() { function _dataprocessor_civix_civicrm_enable() { _dataprocessor_civix_civicrm_config(); if ($upgrader = _dataprocessor_civix_upgrader()) { - if (is_callable(array($upgrader, 'onEnable'))) { + if (is_callable([$upgrader, 'onEnable'])) { $upgrader->onEnable(); } } @@ -181,7 +181,7 @@ function _dataprocessor_civix_civicrm_enable() { function _dataprocessor_civix_civicrm_disable() { _dataprocessor_civix_civicrm_config(); if ($upgrader = _dataprocessor_civix_upgrader()) { - if (is_callable(array($upgrader, 'onDisable'))) { + if (is_callable([$upgrader, 'onDisable'])) { $upgrader->onDisable(); } } @@ -217,22 +217,23 @@ function _dataprocessor_civix_upgrader() { } /** - * Search directory tree for files which match a glob pattern + * Search directory tree for files which match a glob pattern. * * Note: Dot-directories (like "..", ".git", or ".svn") will be ignored. * Note: In Civi 4.3+, delegate to CRM_Utils_File::findFiles() * - * @param $dir string, base dir - * @param $pattern string, glob pattern, eg "*.txt" + * @param string $dir base dir + * @param string $pattern , glob pattern, eg "*.txt" + * * @return array(string) */ function _dataprocessor_civix_find_files($dir, $pattern) { - if (is_callable(array('CRM_Utils_File', 'findFiles'))) { + if (is_callable(['CRM_Utils_File', 'findFiles'])) { return CRM_Utils_File::findFiles($dir, $pattern); } - $todos = array($dir); - $result = array(); + $todos = [$dir]; + $result = []; while (!empty($todos)) { $subdir = array_shift($todos); foreach (_dataprocessor_civix_glob("$subdir/$pattern") as $match) { @@ -296,14 +297,13 @@ function _dataprocessor_civix_civicrm_caseTypes(&$caseTypes) { $name = preg_replace('/\.xml$/', '', basename($file)); if ($name != CRM_Case_XMLProcessor::mungeCaseType($name)) { $errorMessage = sprintf("Case-type file name is malformed (%s vs %s)", $name, CRM_Case_XMLProcessor::mungeCaseType($name)); - CRM_Core_Error::fatal($errorMessage); - // throw new CRM_Core_Exception($errorMessage); + throw new CRM_Core_Exception($errorMessage); } - $caseTypes[$name] = array( + $caseTypes[$name] = [ 'module' => E::LONG_NAME, 'name' => $name, 'file' => $file, - ); + ]; } } @@ -361,11 +361,12 @@ function _dataprocessor_civix_civicrm_themes(&$themes) { * * @link http://php.net/glob * @param string $pattern + * * @return array, possibly empty */ function _dataprocessor_civix_glob($pattern) { $result = glob($pattern); - return is_array($result) ? $result : array(); + return is_array($result) ? $result : []; } /** @@ -376,16 +377,18 @@ function _dataprocessor_civix_glob($pattern) { * 'Mailing', or 'Administer/System Settings' * @param array $item - the item to insert (parent/child attributes will be * filled for you) + * + * @return bool */ function _dataprocessor_civix_insert_navigation_menu(&$menu, $path, $item) { // If we are done going down the path, insert menu if (empty($path)) { - $menu[] = array( - 'attributes' => array_merge(array( + $menu[] = [ + 'attributes' => array_merge([ 'label' => CRM_Utils_Array::value('name', $item), 'active' => 1, - ), $item), - ); + ], $item), + ]; return TRUE; } else { @@ -396,9 +399,9 @@ function _dataprocessor_civix_insert_navigation_menu(&$menu, $path, $item) { foreach ($menu as $key => &$entry) { if ($entry['attributes']['name'] == $first) { if (!isset($entry['child'])) { - $entry['child'] = array(); + $entry['child'] = []; } - $found = _dataprocessor_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item, $key); + $found = _dataprocessor_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item); } } return $found; @@ -409,7 +412,7 @@ function _dataprocessor_civix_insert_navigation_menu(&$menu, $path, $item) { * (Delegated) Implements hook_civicrm_navigationMenu(). */ function _dataprocessor_civix_navigationMenu(&$nodes) { - if (!is_callable(array('CRM_Core_BAO_Navigation', 'fixNavigationMenu'))) { + if (!is_callable(['CRM_Core_BAO_Navigation', 'fixNavigationMenu'])) { _dataprocessor_civix_fixNavigationMenu($nodes); } } diff --git a/tests/phpunit/CRM/Dataprocessor/ImportDataProcessorTest.php b/tests/phpunit/CRM/Dataprocessor/ImportDataProcessorTest.php index 02947cc6..0e511fb5 100644 --- a/tests/phpunit/CRM/Dataprocessor/ImportDataProcessorTest.php +++ b/tests/phpunit/CRM/Dataprocessor/ImportDataProcessorTest.php @@ -77,8 +77,10 @@ class CRM_Dataprocessor_ImportDataProcessorTest extends CRM_Dataprocessor_TestBa $importCode = json_decode($configuration, TRUE); $importResult = CRM_Dataprocessor_Utils_Importer::import($importCode, '', true); - $id = $importResult['original_id']; + + $id = $importResult['new_id']; $result = civicrm_api3('DataProcessor', 'get', array("id"=> $id)); + $fields = civicrm_api3('DataProcessorField', 'get', array("data_processor_id"=> $id)); $datasource = civicrm_api3('DataProcessorSource', 'get', array("data_processor_id"=> $id)); $outputs = civicrm_api3('DataProcessorOutput', 'get', array("data_processor_id"=> $id)); diff --git a/tests/phpunit/CRM/Dataprocessor/TestBase.php b/tests/phpunit/CRM/Dataprocessor/TestBase.php index 291f626f..85ced743 100644 --- a/tests/phpunit/CRM/Dataprocessor/TestBase.php +++ b/tests/phpunit/CRM/Dataprocessor/TestBase.php @@ -62,10 +62,13 @@ class CRM_Dataprocessor_TestBase extends \PHPUnit\Framework\TestCase implements // See: https://docs.civicrm.org/dev/en/latest/testing/phpunit/#civitest return \Civi\Test::headless() ->installMe(__DIR__) - ->apply(TRUE); + ->apply(FALSE); } public function setUp() { + // This assertion is here to catch the issue previously caused in UIOutputHelper::postHook + // whereby running a test would break the transaction of the test and therefore leave + // a processor defined in the test databsae, corrupting the fixture for the next tests. $c = CRM_Core_DAO::singleValueQuery("SELECT count(*) FROM civicrm_data_processor"); $this->assertEquals(0, $c, "setup: already $c data processors defined."); parent::setUp(); -- GitLab