znt/module/convert/test/tao/importjiraproject.php

253 lines
8.6 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=测试 convertTao::importJiraProject();
timeout=0
cid=15862
- 执行convertTest模块的importJiraProjectTest方法参数是array @1
- 执行convertTest模块的importJiraProjectTest方法参数是$testData2 @1
- 执行convertTest模块的importJiraProjectTest方法参数是$testData3 @1
- 执行convertTest模块的importJiraProjectTest方法参数是$testData4 @1
- 执行convertTest模块的importJiraProjectTest方法参数是$testData5 @1
- 执行convertTest模块的importJiraProjectTest方法参数是$testData6 @1
- 执行convertTest模块的importJiraProjectTest方法参数是$testData7 @1
- 执行convertTest模块的importJiraProjectTest方法参数是$testData8 @1
- 执行convertTest模块的importJiraProjectTest方法参数是$testData9 @1
- 执行convertTest模块的importJiraProjectTest方法参数是$testData10 @1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/tao.class.php';
// 创建测试所需的临时表
global $tester;
$sql = <<<EOT
CREATE TABLE IF NOT EXISTS `jiratmprelation`(
`id` int(8) NOT NULL AUTO_INCREMENT,
`AType` char(30) NOT NULL,
`AID` char(100) NOT NULL,
`BType` char(30) NOT NULL,
`BID` char(100) NOT NULL,
`extra` char(100) NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `relation` (`AType`,`BType`,`AID`,`BID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
EOT;
try {
$tester->dbh->exec($sql);
$tester->dbh->exec('TRUNCATE TABLE jiratmprelation');
} catch (Exception $e) {
// 表可能已存在,忽略错误
}
if(!defined('JIRA_TMPRELATION')) define('JIRA_TMPRELATION', '`jiratmprelation`');
// 清理可能存在的测试数据
try {
$tester->dbh->exec('DELETE FROM zt_project WHERE name LIKE "Test%" OR name LIKE "测试%"');
$tester->dbh->exec('DELETE FROM zt_product WHERE name LIKE "Test%" OR name LIKE "测试%"');
// $tester->dbh->exec('DELETE FROM zt_execution WHERE name LIKE "Test%" OR name LIKE "测试%"'); // execution表可能不存在
$tester->dbh->exec('TRUNCATE TABLE jiratmprelation');
} catch (Exception $e) {
// 忽略清理错误
}
// 准备更完整的测试数据
$user = zenData('user');
$user->account->range('admin,user1,user2,user3,testuser1,testuser2,testuser3,testuser4,testuser5');
$user->realname->range('管理员,用户1,用户2,用户3,测试用户1,测试用户2,测试用户3,测试用户4,测试用户5');
$user->password->range('123456{9}');
$user->role->range('admin{1},qa{3},dev{5}');
$user->deleted->range('0{9}');
$user->gen(9);
$project = zenData('project');
$project->name->range('项目1,项目2,项目3,Test Project{2}');
$project->code->range('PRJ001,PRJ002,PRJ003,TEST{2}');
$project->status->range('wait{1},doing{2},closed{2}');
$project->deleted->range('0{5}');
$project->type->range('project{5}');
$project->gen(8);
$product = zenData('product');
$product->name->range('产品1,产品2,产品3,Test Product{5}');
$product->code->range('PROD001,PROD002,PROD003,TEST{5}');
$product->status->range('normal{5},closed{3}');
$product->deleted->range('0{8}');
$product->type->range('normal{8}');
$product->gen(8);
// 准备group数据用于权限测试
$group = zenData('group');
$group->name->range('管理员,项目经理,开发{3},测试{2}');
$group->role->range('admin{1},manager{1},dev{3},qa{2}');
$group->gen(7);
// 准备临时关系表的数据,模拟已存在的项目关系(用于测试去重)
try {
$tester->dbh->exec("INSERT INTO jiratmprelation (AType, AID, BType, BID) VALUES ('jproject', '1001', 'zproject', '1')");
$tester->dbh->exec("INSERT INTO jiratmprelation (AType, AID, BType, BID) VALUES ('jproject', '1001', 'zproduct', '1')");
} catch (Exception $e) {
// 如果数据已存在则忽略错误
}
// 设置必要的session数据
global $app;
$app->session->set('jiraMethod', 'file');
$app->session->set('jiraUser', json_encode(array('password' => '123456', 'group' => 1, 'mode' => 'account')));
$app->session->set('jiraRelation', json_encode(array()));
su('admin');
$convertTest = new convertTaoTest();
// 步骤1空数组输入边界值测试
r($convertTest->importJiraProjectTest(array())) && p() && e('1');
// 步骤2已删除项目状态过滤测试
$testData2 = array(
'2001' => (object)array(
'id' => '2001',
'pkey' => 'DELETED',
'originalkey' => 'DELETED_OLD',
'pname' => 'Deleted Project',
'description' => 'This project was deleted in JIRA',
'ptype' => 'software',
'pstatus' => 'deleted'
)
);
r($convertTest->importJiraProjectTest($testData2)) && p() && e('1');
// 步骤3重复项目ID去重机制验证
$testData3 = array(
'1001' => (object)array(
'id' => '1001',
'pkey' => 'DUPLICATE',
'originalkey' => 'DUPLICATE_OLD',
'pname' => 'Duplicate Project Test',
'description' => 'Testing duplicate project handling',
'ptype' => 'software',
'pstatus' => 'active'
)
);
r($convertTest->importJiraProjectTest($testData3)) && p() && e('1');
// 步骤4正常项目完整导入流程测试
$testData4 = array(
'3001' => (object)array(
'id' => '3001',
'pkey' => 'TESTNORMAL',
'originalkey' => 'TESTNORMAL_OLD',
'pname' => 'Test Normal Project',
'description' => 'Normal project for complete testing',
'ptype' => 'software',
'pstatus' => 'active',
'lead' => 'admin'
)
);
r($convertTest->importJiraProjectTest($testData4)) && p() && e('1');
// 步骤5项目状态映射转换验证
$testData5 = array(
'3002' => (object)array(
'id' => '3002',
'pkey' => 'TESTARCHIVED',
'originalkey' => 'TESTARCHIVED_OLD',
'pname' => 'Test Archived Project',
'description' => 'Archived project testing',
'ptype' => 'software',
'pstatus' => 'archived'
)
);
r($convertTest->importJiraProjectTest($testData5)) && p() && e('1');
// 步骤6批量项目导入并发处理测试
$testData6 = array(
'3003' => (object)array(
'id' => '3003',
'pkey' => 'TESTBATCH1',
'originalkey' => 'TESTBATCH1_OLD',
'pname' => 'Test Batch Project 1',
'description' => 'First batch import project',
'ptype' => 'software',
'pstatus' => 'active',
'lead' => 'user1'
),
'3004' => (object)array(
'id' => '3004',
'pkey' => 'TESTBATCH2',
'originalkey' => 'TESTBATCH2_OLD',
'pname' => 'Test Batch Project 2',
'description' => 'Second batch import project',
'ptype' => 'business',
'pstatus' => 'active',
'lead' => 'user2'
)
);
r($convertTest->importJiraProjectTest($testData6)) && p() && e('1');
// 步骤7必填字段数据完整性验证
$testData7 = array(
'3005' => (object)array(
'id' => '3005',
'pkey' => 'TESTFIELDS',
'originalkey' => 'TESTFIELDS_OLD',
'pname' => 'Test Complete Fields Project',
'description' => 'Testing all required fields completion',
'ptype' => 'software',
'pstatus' => 'active',
'lead' => 'admin',
'created' => '2023-01-01 10:00:00'
)
);
r($convertTest->importJiraProjectTest($testData7)) && p() && e('1');
// 步骤8异常数据容错性处理测试
$testData8 = array(
'3006' => (object)array(
'id' => '3006',
'pkey' => 'TESTEXCEPTION',
'originalkey' => 'TESTEXCEPTION_OLD',
'pname' => 'Test Exception Handling Project',
'description' => 'Testing exception data handling and fault tolerance',
'ptype' => 'unknown_type',
'pstatus' => 'unknown_status'
)
);
r($convertTest->importJiraProjectTest($testData8)) && p() && e('1');
// 步骤9项目关联关系建立验证
$testData9 = array(
'3007' => (object)array(
'id' => '3007',
'pkey' => 'TESTRELATION',
'originalkey' => 'TESTRELATION_OLD',
'pname' => 'Test Relation Project',
'description' => 'Testing project relation creation',
'ptype' => 'software',
'pstatus' => 'active',
'lead' => 'admin'
)
);
r($convertTest->importJiraProjectTest($testData9)) && p() && e('1');
// 步骤10数据库事务一致性测试
$testData10 = array(
'3008' => (object)array(
'id' => '3008',
'pkey' => 'TESTTRANSACTION',
'originalkey' => 'TESTTRANSACTION_OLD',
'pname' => 'Test Transaction Consistency Project',
'description' => 'Testing database transaction consistency during import',
'ptype' => 'service_management',
'pstatus' => 'active',
'lead' => 'user1'
)
);
r($convertTest->importJiraProjectTest($testData10)) && p() && e('1');