znt/module/bug/test/zen/prepareeditextras.php

104 lines
3.6 KiB
PHP
Raw Permalink Normal View History

#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
// zendata数据准备
$bug = zenData('bug');
$bug->loadYaml('bug_prepareeditextras', false, 2)->gen(10);
su('admin');
/**
title=测试 bugZen::prepareEditExtras();
timeout=0
cid=15467
- 执行invokeArgs($zen模块的newInstance方法参数是, [$formData1, $oldBug1] 属性id @1
- 执行invokeArgs($zen模块的newInstance方法参数是, [$formData2, $oldBug2] @0
- 执行invokeArgs($zen模块的newInstance方法参数是, [$formData3, $oldBug3] 属性assignedTo @user1
- 执行invokeArgs($zen模块的newInstance方法参数是, [$formData4, $oldBug4]
- 属性status @resolved
- 属性confirmed @1
- 执行invokeArgs($zen模块的newInstance方法参数是, [$formData5, $oldBug5]
- 属性status @closed
- 属性assignedTo @closed
*/
global $tester, $app;
$app->rawModule = 'bug';
$app->rawMethod = 'edit';
// 创建测试用的form对象
function createFormMock($assignedTo, $resolution = '', $resolvedBy = '', $closedBy = '', $closedDate = '') {
global $tester;
// 设置POST数据模拟表单提交
$_POST['assignedTo'] = $assignedTo;
$_POST['resolution'] = $resolution;
$_POST['resolvedBy'] = $resolvedBy;
$_POST['resolvedDate'] = '';
$_POST['closedBy'] = $closedBy;
$_POST['closedDate'] = $closedDate;
$_POST['title'] = 'Test Bug';
$_POST['type'] = 'codeerror';
$_POST['product'] = 1;
$_POST['execution'] = 0;
$_POST['openedBuild'] = 'trunk';
$_POST['pri'] = 3;
$_POST['severity'] = 3;
$_POST['steps'] = 'Test steps';
// 使用真实的form类创建对象
$formData = form::data($tester->config->bug->form->edit);
return $formData;
}
// 准备基础Bug数据
$baseBug = (object)array(
'id' => 1,
'product' => 1,
'assignedTo' => 'admin',
'status' => 'active',
'lastEditedDate' => '2023-05-04 14:00:00',
'openedBy' => 'admin',
'resolvedBy' => ''
);
$zen = initReference('bug');
$func = $zen->getMethod('prepareEditExtras');
// 测试1正常编辑Bug数据处理
$_POST['lastEditedDate'] = '2023-05-04 14:00:00';
$formData1 = createFormMock('admin');
$oldBug1 = clone $baseBug;
r($func->invokeArgs($zen->newInstance(), [$formData1, $oldBug1])) && p('id') && e('1');
// 测试2测试并发编辑冲突检测
$_POST['lastEditedDate'] = '2023-05-04 14:00:00';
$formData2 = createFormMock('user1');
$oldBug2 = clone $baseBug;
$oldBug2->lastEditedDate = '2023-05-03 13:00:00'; // 设置不同的编辑时间
r($func->invokeArgs($zen->newInstance(), [$formData2, $oldBug2])) && p() && e('0');
// 测试3测试指派人员变更时更新指派日期
$_POST['lastEditedDate'] = '2023-05-04 14:00:00';
$formData3 = createFormMock('user1');
$oldBug3 = clone $baseBug;
$oldBug3->assignedTo = 'admin'; // 原指派人与新指派人不同
r($func->invokeArgs($zen->newInstance(), [$formData3, $oldBug3])) && p('assignedTo') && e('user1');
// 测试4测试解决Bug时自动设置状态和解决日期
$_POST['lastEditedDate'] = '2023-05-04 14:00:00';
$formData4 = createFormMock('user1', 'fixed', 'admin');
$oldBug4 = clone $baseBug;
r($func->invokeArgs($zen->newInstance(), [$formData4, $oldBug4])) && p('status,confirmed') && e('resolved,1');
// 测试5测试关闭Bug时自动设置状态和关闭日期必须先解决
$_POST['lastEditedDate'] = '2023-05-04 14:00:00';
$formData5 = createFormMock('user1', 'fixed', 'admin', 'admin', '2023-05-10 10:00:00');
$oldBug5 = clone $baseBug;
r($func->invokeArgs($zen->newInstance(), [$formData5, $oldBug5])) && p('status,assignedTo') && e('closed,closed');