* Refactor upgradeModel::checkProcess, and add its unit test.

This commit is contained in:
liumengyi
2023-12-19 18:45:01 +08:00
parent 35ed7819d6
commit ee13858e28
3 changed files with 78 additions and 3 deletions
+4 -3
View File
@@ -2162,18 +2162,19 @@ class upgradeModel extends model
}
/**
* 检查流程。
* Check weither process or not.
*
* @access public
* @return array
*/
public function checkProcess()
public function checkProcess(): array
{
$fromVersion = $this->config->installedVersion;
$needProcess = array();
if(strpos($fromVersion, 'ipd') !== false) return $needProcess;
if(strpos($fromVersion, 'max') === false and strpos($fromVersion, 'biz') === false and (strpos($fromVersion, 'pro') === false ? version_compare($fromVersion, '8.3', '<') : version_compare($fromVersion, 'pro5.4', '<'))) $needProcess['updateFile'] = 'process';
if(strpos($fromVersion, 'max') === false and $this->config->systemMode == 'new')
if(strpos($fromVersion, 'max') === false && strpos($fromVersion, 'biz') === false && (strpos($fromVersion, 'pro') === false ? version_compare($fromVersion, '8.3', '<') : version_compare($fromVersion, 'pro5.4', '<'))) $needProcess['updateFile'] = 'process';
if(strpos($fromVersion, 'max') === false && $this->config->systemMode == 'new')
{
if(strpos($fromVersion, 'pro') !== false)
{
@@ -0,0 +1,54 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
/**
title=测试 upgradeModel->checkProcess();
cid=1
- 测试版本 18.1 管理模式 new 的流程 @0
- 测试版本 18.1 管理模式 classic 的流程 @0
- 测试版本 pro10.1 管理模式 new 的流程 @changeEngine:notice
- 测试版本 pro10.1 管理模式 classic 的流程 @changeEngine:notice
- 测试版本 pro3.1 管理模式 new 的流程 @updateFile:process;search:notice;changeEngine:notice
- 测试版本 pro3.1 管理模式 classic 的流程 @updateFile:process;changeEngine:notice
- 测试版本 biz4.1 管理模式 new 的流程 @search:notice;changeEngine:notice
- 测试版本 biz4.1 管理模式 classic 的流程 @changeEngine:notice
- 测试版本 biz6.1 管理模式 new 的流程 @changeEngine:notice
- 测试版本 biz6.1 管理模式 classic 的流程 @changeEngine:notice
- 测试版本 max4.3 管理模式 new 的流程 @0
- 测试版本 max4.3 管理模式 classic 的流程 @0
- 测试版本 ipd1.1 管理模式 new 的流程 @0
- 测试版本 ipd1.1 管理模式 classic 的流程 @0
**/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/upgrade.class.php';
zdTable('user')->config('user')->gen(5);
su('admin');
$upgrade = new upgradeTest();
$emptyErrors = array();
$versions = array('18.1', 'pro10.1', 'pro3.1', 'biz4.1', 'biz6.1', 'max4.3', 'ipd1.1');
$systemMode = array('new', 'classic');
r($upgrade->checkProcessTest($versions[0], $systemMode[0])) && p() && e('0'); // 测试版本 18.1 管理模式 new 的流程
r($upgrade->checkProcessTest($versions[0], $systemMode[1])) && p() && e('0'); // 测试版本 18.1 管理模式 classic 的流程
r($upgrade->checkProcessTest($versions[1], $systemMode[0])) && p() && e('changeEngine:notice'); // 测试版本 pro10.1 管理模式 new 的流程
r($upgrade->checkProcessTest($versions[1], $systemMode[1])) && p() && e('changeEngine:notice'); // 测试版本 pro10.1 管理模式 classic 的流程
r($upgrade->checkProcessTest($versions[2], $systemMode[0])) && p() && e('updateFile:process;search:notice;changeEngine:notice'); // 测试版本 pro3.1 管理模式 new 的流程
r($upgrade->checkProcessTest($versions[2], $systemMode[1])) && p() && e('updateFile:process;changeEngine:notice'); // 测试版本 pro3.1 管理模式 classic 的流程
r($upgrade->checkProcessTest($versions[3], $systemMode[0])) && p() && e('search:notice;changeEngine:notice'); // 测试版本 biz4.1 管理模式 new 的流程
r($upgrade->checkProcessTest($versions[3], $systemMode[1])) && p() && e('changeEngine:notice'); // 测试版本 biz4.1 管理模式 classic 的流程
r($upgrade->checkProcessTest($versions[4], $systemMode[0])) && p() && e('changeEngine:notice'); // 测试版本 biz6.1 管理模式 new 的流程
r($upgrade->checkProcessTest($versions[4], $systemMode[1])) && p() && e('changeEngine:notice'); // 测试版本 biz6.1 管理模式 classic 的流程
r($upgrade->checkProcessTest($versions[5], $systemMode[0])) && p() && e('0'); // 测试版本 max4.3 管理模式 new 的流程
r($upgrade->checkProcessTest($versions[5], $systemMode[1])) && p() && e('0'); // 测试版本 max4.3 管理模式 classic 的流程
r($upgrade->checkProcessTest($versions[6], $systemMode[0])) && p() && e('0'); // 测试版本 ipd1.1 管理模式 new 的流程
r($upgrade->checkProcessTest($versions[6], $systemMode[1])) && p() && e('0'); // 测试版本 ipd1.1 管理模式 classic 的流程
+20
View File
@@ -220,4 +220,24 @@ class upgradeTest
$return = $this->objectModel->getError();
return implode(',', $return);
}
/**
* 测试检查流程。
* Test check weither process or not.
*
* @param string $installedVersion
* @param string $systemMode
* @access public
* @return string
*/
public function checkProcessTest(string $installedVersion, string $systemMode): string
{
global $tester;
$tester->config->installedVersion = $installedVersion;
$tester->config->systemMode = $systemMode;
$process = $this->objectModel->checkProcess();
$return = '';
foreach($process as $key => $value) $return .= "{$key}:{$value};";
return trim($return, ';');
}
}