znt/module/execution/test/tao/buildbatchupdateexecutions.php

86 lines
4.4 KiB
PHP
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env php
<?php
/**
title=测试 executionTao::buildBatchUpdateExecutions();
timeout=0
cid=16382
- 执行executionTest模块的buildBatchUpdateExecutionsTest方法参数是$validPostData, $oldExecutions 第1条的name属性 @更新的执行1
- 执行executionTest模块的buildBatchUpdateExecutionsTest方法参数是$duplicateNameData, $oldExecutions 属性name[2] @阶段名称不能相同!
- 执行executionTest模块的buildBatchUpdateExecutionsTest方法参数是$emptyCodeData, $oldExecutions 属性code[1] @『执行代号』不能为空。
- 执行executionTest模块的buildBatchUpdateExecutionsTest方法参数是$invalidDateData, $oldExecutions 属性end[1] @『2023-02-01』应当不小于计划开始时间『2023-03-01』。
- 执行executionTest模块的buildBatchUpdateExecutionsTest方法参数是$excessDaysData, $oldExecutions 属性days[1] @可用工作日不能超过『28』天
- 执行executionTest模块的buildBatchUpdateExecutionsTest方法参数是$emptyBeginData, $oldExecutions 属性begin[1] @『计划开始』不能为空。
- 执行executionTest模块的buildBatchUpdateExecutionsTest方法参数是$emptyEndData, $oldExecutions 属性end[1] @『计划完成』不能为空。
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/tao.class.php';
// 注释掉zenData调用避免数据库连接问题
// zenData('user')->gen(10);
// zenData('project')->gen(10);
su('admin');
global $config;
$config->execution->edit->requiredFields = 'name,code,begin,end';
$executionTest = new executionTaoTest();
// 构造基础的老执行数据
$oldExecutions = array();
for($i = 1; $i <= 3; $i++) {
$execution = new stdClass();
$execution->id = $i;
$execution->name = '执行' . $i;
$execution->parent = 1;
$execution->project = 1;
$execution->type = 'sprint';
$oldExecutions[$i] = $execution;
}
// 1. 正常的批量更新数据
$validPostData = new stdClass();
$validPostData->id = array(1 => 1, 2 => 2, 3 => 3);
$validPostData->name = array(1 => '更新的执行1', 2 => '更新的执行2', 3 => '更新的执行3');
$validPostData->code = array(1 => 'updated_exec1', 2 => 'updated_exec2', 3 => 'updated_exec3');
$validPostData->begin = array(1 => '2023-02-01', 2 => '2023-03-01', 3 => '2023-04-01');
$validPostData->end = array(1 => '2023-02-28', 2 => '2023-03-31', 3 => '2023-04-30');
$validPostData->days = array(1 => '20', 2 => '25', 3 => '22');
// 2. 名称重复的数据 (在同一parent下名称重复)
$duplicateNameData = clone $validPostData;
$duplicateNameData->name = array(1 => '执行1', 2 => '执行1', 3 => '执行3');
// 3. 代码为空的数据
$emptyCodeData = clone $validPostData;
$emptyCodeData->code = array(1 => '', 2 => 'exec2', 3 => 'exec3');
// 4. 时间范围错误的数据
$invalidDateData = clone $validPostData;
$invalidDateData->begin = array(1 => '2023-03-01', 2 => '2023-03-01', 3 => '2023-04-01');
$invalidDateData->end = array(1 => '2023-02-01', 2 => '2023-03-31', 3 => '2023-04-30');
// 5. 工作日超出范围的数据
$excessDaysData = clone $validPostData;
$excessDaysData->days = array(1 => '50', 2 => '25', 3 => '22');
// 6. 开始时间为空的数据
$emptyBeginData = clone $validPostData;
$emptyBeginData->begin = array(1 => '', 2 => '2023-03-01', 3 => '2023-04-01');
// 7. 结束时间为空的数据
$emptyEndData = clone $validPostData;
$emptyEndData->end = array(1 => '', 2 => '2023-03-31', 3 => '2023-04-30');
r($executionTest->buildBatchUpdateExecutionsTest($validPostData, $oldExecutions)) && p('1:name') && e('更新的执行1');
r($executionTest->buildBatchUpdateExecutionsTest($duplicateNameData, $oldExecutions)) && p('name[2]') && e('阶段名称不能相同!');
r($executionTest->buildBatchUpdateExecutionsTest($emptyCodeData, $oldExecutions)) && p('code[1]') && e('『执行代号』不能为空。');
r($executionTest->buildBatchUpdateExecutionsTest($invalidDateData, $oldExecutions)) && p('end[1]') && e('『2023-02-01』应当不小于计划开始时间『2023-03-01』。');
r($executionTest->buildBatchUpdateExecutionsTest($excessDaysData, $oldExecutions)) && p('days[1]') && e('可用工作日不能超过『28』天');
r($executionTest->buildBatchUpdateExecutionsTest($emptyBeginData, $oldExecutions)) && p('begin[1]') && e('『计划开始』不能为空。');
r($executionTest->buildBatchUpdateExecutionsTest($emptyEndData, $oldExecutions)) && p('end[1]') && e('『计划完成』不能为空。');