diff --git a/module/extension/test/lib/zen.class.php b/module/extension/test/lib/zen.class.php index 43bc457e76..b06ddfbb47 100644 --- a/module/extension/test/lib/zen.class.php +++ b/module/extension/test/lib/zen.class.php @@ -59,4 +59,19 @@ class extensionZenTest extends baseTest if(dao::isError()) return dao::getError(); return $result; } + + /** + * Test checkDepends method. + * + * @param object $condition + * @param array $installedExts + * @access public + * @return bool + */ + public function checkDependsTest(object $condition, array $installedExts) + { + $result = $this->invokeArgs('checkDepends', [$condition, $installedExts]); + if(dao::isError()) return dao::getError(); + return $result; + } } diff --git a/module/extension/test/zen/checkdepends.php b/module/extension/test/zen/checkdepends.php new file mode 100755 index 0000000000..bff47aad32 --- /dev/null +++ b/module/extension/test/zen/checkdepends.php @@ -0,0 +1,89 @@ +#!/usr/bin/env php +code = 'plugin_a'; +$installedExt1->name = 'Plugin A'; +$installedExt1->version = '1.5.0'; + +$installedExt2 = new stdclass(); +$installedExt2->code = 'plugin_b'; +$installedExt2->name = 'Plugin B'; +$installedExt2->version = '2.0.0'; + +$installedExt3 = new stdclass(); +$installedExt3->code = 'plugin_c'; +$installedExt3->name = 'Plugin C'; +$installedExt3->version = '1.0.0'; + +$installedExt4 = new stdclass(); +$installedExt4->code = 'plugin_d'; +$installedExt4->name = 'Plugin D'; +$installedExt4->version = '5.0.0'; + +// 测试步骤1:没有依赖配置(depends为空) +$condition1 = new stdclass(); +$condition1->depends = array(); +$installedExts1 = array('plugin_a' => $installedExt1, 'plugin_b' => $installedExt2); +r($extensionTest->checkDependsTest($condition1, $installedExts1)) && p() && e('1'); + +// 测试步骤2:有依赖配置且所有依赖插件都已安装且版本满足要求 +$condition2 = new stdclass(); +$condition2->depends = array('plugin_a' => array('min' => '1.0.0', 'max' => '2.0.0')); +$installedExts2 = array('plugin_a' => $installedExt1, 'plugin_b' => $installedExt2); +r($extensionTest->checkDependsTest($condition2, $installedExts2)) && p() && e('1'); + +// 测试步骤3:有依赖配置但依赖的插件未安装 +$condition3 = new stdclass(); +$condition3->depends = array('plugin_x' => array('min' => '1.0.0', 'max' => '2.0.0')); +$installedExts3 = array('plugin_a' => $installedExt1, 'plugin_b' => $installedExt2); +r($extensionTest->checkDependsTest($condition3, $installedExts3)) && p() && e('0'); + +// 测试步骤4:有依赖配置且插件已安装但版本低于min范围 +$condition4 = new stdclass(); +$condition4->depends = array('plugin_c' => array('min' => '2.0.0', 'max' => '3.0.0')); +$installedExts4 = array('plugin_c' => $installedExt3); +r($extensionTest->checkDependsTest($condition4, $installedExts4)) && p() && e('1'); + +// 测试步骤5:有依赖配置且插件已安装但版本高于max范围 +$condition5 = new stdclass(); +$condition5->depends = array('plugin_d' => array('min' => '1.0.0', 'max' => '3.0.0')); +$installedExts5 = array('plugin_d' => $installedExt4); +r($extensionTest->checkDependsTest($condition5, $installedExts5)) && p() && e('0'); + +// 测试步骤6:多个依赖插件其中一个未安装 +$condition6 = new stdclass(); +$condition6->depends = array('plugin_a' => array('min' => '1.0.0', 'max' => '2.0.0'), 'plugin_x' => array('min' => '1.0.0', 'max' => '2.0.0')); +$installedExts6 = array('plugin_a' => $installedExt1); +r($extensionTest->checkDependsTest($condition6, $installedExts6)) && p() && e('0'); + +// 测试步骤7:depends配置为空数组 +$condition7 = new stdclass(); +$condition7->depends = array(); +$installedExts7 = array('plugin_a' => $installedExt1); +r($extensionTest->checkDependsTest($condition7, $installedExts7)) && p() && e('1'); \ No newline at end of file