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

316 lines
10 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::importJiraIssue();
timeout=0
cid=15859
- 执行convertTest模块的importJiraIssueTest方法参数是array @1
- 执行convertTest模块的importJiraIssueTest方法参数是$testData2 @1
- 执行convertTest模块的importJiraIssueTest方法参数是$testData3 @1
- 执行convertTest模块的importJiraIssueTest方法参数是$testData4 @1
- 执行convertTest模块的importJiraIssueTest方法参数是$testData5 @1
- 执行convertTest模块的importJiraIssueTest方法参数是$testData6 @1
- 执行convertTest模块的importJiraIssueTest方法参数是$testData7 @1
- 执行convertTest模块的importJiraIssueTest方法参数是$testData8 @1
- 执行convertTest模块的importJiraIssueTest方法参数是$testData9 @1
- 执行convertTest模块的importJiraIssueTest方法参数是$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_story WHERE title LIKE "Test%" OR title LIKE "Jira%"');
$tester->dbh->exec('DELETE FROM zt_task WHERE name LIKE "Test%" OR name LIKE "Jira%"');
$tester->dbh->exec('DELETE FROM zt_bug WHERE title LIKE "Test%" OR title LIKE "Jira%"');
$tester->dbh->exec('TRUNCATE TABLE jiratmprelation');
} catch (Exception $e) {
// 忽略清理错误
}
// 准备用户数据
$user = zenData('user');
$user->account->range('admin,user1,user2,jirauser1,jirauser2');
$user->realname->range('管理员,用户1,用户2,Jira用户1,Jira用户2');
$user->password->range('123456{5}');
$user->role->range('admin{1},qa{2},dev{2}');
$user->deleted->range('0{5}');
$user->gen(5);
// 准备项目数据
$project = zenData('project');
$project->name->range('测试项目1,测试项目2,Jira项目1,Jira项目2');
$project->code->range('PRJ001,PRJ002,JIRA001,JIRA002');
$project->status->range('doing{4}');
$project->deleted->range('0{4}');
$project->type->range('project{4}');
$project->gen(4);
// 准备产品数据
$product = zenData('product');
$product->name->range('测试产品1,测试产品2,Jira产品1,Jira产品2');
$product->code->range('PROD001,PROD002,JIRAPROD1,JIRAPROD2');
$product->status->range('normal{4}');
$product->deleted->range('0{4}');
$product->type->range('normal{4}');
$product->gen(4);
// 准备执行数据
$execution = zenData('project');
$execution->name->range('迭代1,迭代2,Sprint1,Sprint2');
$execution->status->range('doing{4}');
$execution->deleted->range('0{4}');
$execution->type->range('sprint{4}');
$execution->parent->range('1,1,2,2');
$execution->gen(4);
// 准备临时关系表的数据
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')");
$tester->dbh->exec("INSERT INTO jiratmprelation (AType, AID, BType, BID) VALUES ('jproject', '1001', 'zexecution', '1')");
$tester->dbh->exec("INSERT INTO jiratmprelation (AType, AID, BType, BID) VALUES ('jproject', '1002', 'zproject', '2')");
$tester->dbh->exec("INSERT INTO jiratmprelation (AType, AID, BType, BID) VALUES ('jproject', '1002', 'zproduct', '2')");
$tester->dbh->exec("INSERT INTO jiratmprelation (AType, AID, BType, BID) VALUES ('jproject', '1002', 'zexecution', '2')");
// 已存在的issue记录(用于测试去重)
$tester->dbh->exec("INSERT INTO jiratmprelation (AType, AID, BType, BID, extra) VALUES ('jissueid', '5001', 'zstory', '1', 'issue')");
// Sprint映射关系
$tester->dbh->exec("INSERT INTO jiratmprelation (AType, AID, BType, BID) VALUES ('jsprint', '2001', 'zexecution', '3')");
// 项目key映射
$tester->dbh->exec("INSERT INTO jiratmprelation (AType, AID, BType, BID, extra) VALUES ('joldkey', 'OLD', 'jnewkey', 'NEW', '1001')");
} catch (Exception $e) {
// 如果数据已存在则忽略错误
}
// 设置必要的session数据
global $app;
$app->session->set('jiraMethod', 'file');
$app->session->set('jiraRelation', json_encode(array(
'zentaoObject' => array(
'1' => 'story',
'2' => 'task',
'3' => 'bug',
'4' => 'testcase',
'5' => 'feedback',
'6' => 'ticket'
)
)));
su('admin');
$convertTest = new convertTaoTest();
// 步骤1:空数组输入边界值测试
r($convertTest->importJiraIssueTest(array())) && p() && e('1');
// 步骤2:已存在issue去重机制验证
$testData2 = array(
'5001' => (object)array(
'id' => '5001',
'project' => '1001',
'issuetype' => '1',
'issuenum' => '101',
'summary' => 'Test Story Already Exists',
'priority' => '3',
'issuestatus' => '1',
'creator' => 'admin',
'created' => '2024-01-01 10:00:00',
'assignee' => 'admin',
'resolution' => null
)
);
r($convertTest->importJiraIssueTest($testData2)) && p() && e('1');
// 步骤3:项目关系未映射场景过滤测试
$testData3 = array(
'5002' => (object)array(
'id' => '5002',
'project' => '9999',
'issuetype' => '1',
'issuenum' => '102',
'summary' => 'Test Unmapped Project',
'priority' => '3',
'issuestatus' => '1',
'creator' => 'admin',
'created' => '2024-01-01 10:00:00',
'assignee' => 'admin',
'resolution' => null
)
);
r($convertTest->importJiraIssueTest($testData3)) && p() && e('1');
// 步骤4:Story类型issue正常导入流程测试
$testData4 = array(
'5003' => (object)array(
'id' => '5003',
'project' => '1001',
'issuetype' => '1',
'issuenum' => '103',
'summary' => 'Jira Story Import Test',
'priority' => '2',
'issuestatus' => '1',
'creator' => 'admin',
'created' => '2024-01-01 11:00:00',
'assignee' => 'user1',
'resolution' => null,
'description' => 'This is a test story imported from Jira'
)
);
r($convertTest->importJiraIssueTest($testData4)) && p() && e('1');
// 步骤5:Task类型issue正常导入流程测试
$testData5 = array(
'5004' => (object)array(
'id' => '5004',
'project' => '1001',
'issuetype' => '2',
'issuenum' => '104',
'summary' => 'Jira Task Import Test',
'priority' => '3',
'issuestatus' => '1',
'creator' => 'admin',
'created' => '2024-01-01 12:00:00',
'assignee' => 'user1',
'resolution' => null,
'description' => 'This is a test task imported from Jira'
)
);
r($convertTest->importJiraIssueTest($testData5)) && p() && e('1');
// 步骤6:Bug类型issue正常导入流程测试
$testData6 = array(
'5005' => (object)array(
'id' => '5005',
'project' => '1001',
'issuetype' => '3',
'issuenum' => '105',
'summary' => 'Jira Bug Import Test',
'priority' => '1',
'issuestatus' => '1',
'creator' => 'admin',
'created' => '2024-01-01 13:00:00',
'assignee' => 'user2',
'resolution' => null,
'description' => 'This is a test bug imported from Jira'
)
);
r($convertTest->importJiraIssueTest($testData6)) && p() && e('1');
// 步骤7:批量issue并发导入处理测试
$testData7 = array(
'5006' => (object)array(
'id' => '5006',
'project' => '1001',
'issuetype' => '1',
'issuenum' => '106',
'summary' => 'Batch Import Story 1',
'priority' => '3',
'issuestatus' => '1',
'creator' => 'admin',
'created' => '2024-01-01 14:00:00',
'assignee' => 'admin',
'resolution' => null
),
'5007' => (object)array(
'id' => '5007',
'project' => '1001',
'issuetype' => '2',
'issuenum' => '107',
'summary' => 'Batch Import Task 1',
'priority' => '3',
'issuestatus' => '1',
'creator' => 'admin',
'created' => '2024-01-01 14:30:00',
'assignee' => 'user1',
'resolution' => null
)
);
r($convertTest->importJiraIssueTest($testData7)) && p() && e('1');
// 步骤8:自定义字段数据映射转换测试
$testData8 = array(
'5008' => (object)array(
'id' => '5008',
'project' => '1001',
'issuetype' => '1',
'issuenum' => '108',
'summary' => 'Custom Field Mapping Test',
'priority' => '3',
'issuestatus' => '1',
'creator' => 'admin',
'created' => '2024-01-01 15:00:00',
'assignee' => 'user1',
'resolution' => null
)
);
r($convertTest->importJiraIssueTest($testData8)) && p() && e('1');
// 步骤9:Sprint执行关联关系建立验证
$testData9 = array(
'5009' => (object)array(
'id' => '5009',
'project' => '1001',
'issuetype' => '1',
'issuenum' => '109',
'execution' => '2001',
'summary' => 'Sprint Association Test',
'priority' => '2',
'issuestatus' => '1',
'creator' => 'admin',
'created' => '2024-01-01 16:00:00',
'assignee' => 'user1',
'resolution' => null
)
);
r($convertTest->importJiraIssueTest($testData9)) && p() && e('1');
// 步骤10:Ticket类型issue导入及临时关系创建测试
$testData10 = array(
'5010' => (object)array(
'id' => '5010',
'project' => '1001',
'issuetype' => '6',
'issuenum' => '110',
'summary' => 'Ticket Import Test',
'priority' => '3',
'issuestatus' => '1',
'creator' => 'admin',
'created' => '2024-01-01 17:00:00',
'assignee' => 'admin',
'resolution' => null
)
);
r($convertTest->importJiraIssueTest($testData10)) && p() && e('1');