znt/module/story/test/model/syncgrade.php

266 lines
7 KiB
PHP
Raw Permalink Normal View History

#!/usr/bin/env php
<?php
/**
title=测试 storyModel::syncGrade();
timeout=0
cid=18590
- 步骤1父需求层级变更同步子需求grade从2变为3第3条的grade属性 @3
- 步骤2非父需求不执行同步 @not_parent
- 步骤3父需求2同步子需求5子需求grade从3变为4第5条的grade属性 @4
- 步骤4多子需求同步子需求grade从3变为4
- 第3条的grade属性 @4
- 第4条的grade属性 @4
- 步骤5层级降级同步子需求grade从4变为2第5条的grade属性 @2
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/model.class.php';
// 2. 清理并准备测试数据
global $tester;
$tester->dao->delete()->from(TABLE_STORY)->exec();
$tester->dao->delete()->from(TABLE_ACTION)->exec();
// 直接插入测试数据
$tester->dao->insert(TABLE_STORY)->data(array(
'id' => 1,
'vision' => 'rnd',
'parent' => 0,
'product' => 1,
'title' => '父需求1',
'type' => 'story',
'category' => 'feature',
'pri' => 3,
'estimate' => 0,
'status' => 'active',
'stage' => 'wait',
'openedBy' => 'admin',
'openedDate' => '2023-01-01 10:00:00',
'assignedTo' => 'admin',
'assignedDate' => '2023-01-01 10:00:00',
'lastEditedBy' => 'admin',
'lastEditedDate' => '2023-01-01 10:00:00',
'version' => 1,
'deleted' => 0,
'isParent' => '1',
'root' => 1,
'path' => ',1,',
'grade' => 1
))->exec();
$tester->dao->insert(TABLE_STORY)->data(array(
'id' => 2,
'vision' => 'rnd',
'parent' => 0,
'product' => 1,
'title' => '父需求2',
'type' => 'story',
'category' => 'feature',
'pri' => 3,
'estimate' => 0,
'status' => 'active',
'stage' => 'wait',
'openedBy' => 'admin',
'openedDate' => '2023-01-01 10:00:00',
'assignedTo' => 'admin',
'assignedDate' => '2023-01-01 10:00:00',
'lastEditedBy' => 'admin',
'lastEditedDate' => '2023-01-01 10:00:00',
'version' => 1,
'deleted' => 0,
'isParent' => '1',
'root' => 2,
'path' => ',2,',
'grade' => 2
))->exec();
$tester->dao->insert(TABLE_STORY)->data(array(
'id' => 3,
'vision' => 'rnd',
'parent' => 1,
'product' => 1,
'title' => '子需求1',
'type' => 'story',
'category' => 'feature',
'pri' => 3,
'estimate' => 0,
'status' => 'active',
'stage' => 'wait',
'openedBy' => 'admin',
'openedDate' => '2023-01-01 10:00:00',
'assignedTo' => 'admin',
'assignedDate' => '2023-01-01 10:00:00',
'lastEditedBy' => 'admin',
'lastEditedDate' => '2023-01-01 10:00:00',
'version' => 1,
'deleted' => 0,
'isParent' => '0',
'root' => 1,
'path' => ',1,3,',
'grade' => 2
))->exec();
$tester->dao->insert(TABLE_STORY)->data(array(
'id' => 4,
'vision' => 'rnd',
'parent' => 1,
'product' => 1,
'title' => '子需求2',
'type' => 'story',
'category' => 'feature',
'pri' => 3,
'estimate' => 0,
'status' => 'active',
'stage' => 'wait',
'openedBy' => 'admin',
'openedDate' => '2023-01-01 10:00:00',
'assignedTo' => 'admin',
'assignedDate' => '2023-01-01 10:00:00',
'lastEditedBy' => 'admin',
'lastEditedDate' => '2023-01-01 10:00:00',
'version' => 1,
'deleted' => 0,
'isParent' => '0',
'root' => 1,
'path' => ',1,4,',
'grade' => 2
))->exec();
$tester->dao->insert(TABLE_STORY)->data(array(
'id' => 5,
'vision' => 'rnd',
'parent' => 2,
'product' => 1,
'title' => '子需求3',
'type' => 'story',
'category' => 'feature',
'pri' => 3,
'estimate' => 0,
'status' => 'active',
'stage' => 'wait',
'openedBy' => 'admin',
'openedDate' => '2023-01-01 10:00:00',
'assignedTo' => 'admin',
'assignedDate' => '2023-01-01 10:00:00',
'lastEditedBy' => 'admin',
'lastEditedDate' => '2023-01-01 10:00:00',
'version' => 1,
'deleted' => 0,
'isParent' => '0',
'root' => 2,
'path' => ',2,5,',
'grade' => 3
))->exec();
$tester->dao->insert(TABLE_STORY)->data(array(
'id' => 6,
'vision' => 'rnd',
'parent' => 0,
'product' => 1,
'title' => '普通需求1',
'type' => 'story',
'category' => 'feature',
'pri' => 3,
'estimate' => 0,
'status' => 'active',
'stage' => 'wait',
'openedBy' => 'admin',
'openedDate' => '2023-01-01 10:00:00',
'assignedTo' => 'admin',
'assignedDate' => '2023-01-01 10:00:00',
'lastEditedBy' => 'admin',
'lastEditedDate' => '2023-01-01 10:00:00',
'version' => 1,
'deleted' => 0,
'isParent' => '0',
'root' => 6,
'path' => ',6,',
'grade' => 1
))->exec();
// 3. 用户登录(选择合适角色)
su('admin');
// 4. 创建测试实例(变量名与模块名一致)
$storyTest = new storyModelTest();
// 5. 🔴 强制要求必须包含至少5个测试步骤
// 步骤1测试父需求层级变更时同步子需求层级 (父需求1有子需求3,4)
$oldStory = new stdclass();
$oldStory->id = 1;
$oldStory->isParent = '1';
$oldStory->grade = 1;
$oldStory->type = 'story';
$story = new stdclass();
$story->id = 1;
$story->isParent = '1';
$story->grade = 2;
$story->type = 'story';
r($storyTest->syncGradeTest($oldStory, $story)) && p('3:grade') && e('3'); // 步骤1父需求层级变更同步子需求grade从2变为3
// 步骤2测试非父需求调用syncGrade方法
$oldStory = new stdclass();
$oldStory->id = 6;
$oldStory->isParent = '0';
$oldStory->grade = 1;
$oldStory->type = 'story';
$story = new stdclass();
$story->id = 6;
$story->isParent = '0';
$story->grade = 2;
$story->type = 'story';
r($storyTest->syncGradeTest($oldStory, $story)) && p() && e('not_parent'); // 步骤2非父需求不执行同步
// 步骤3测试父需求有子需求时的同步 (父需求2有子需求5)
$oldStory = new stdclass();
$oldStory->id = 2;
$oldStory->isParent = '1';
$oldStory->grade = 2;
$oldStory->type = 'story';
$story = new stdclass();
$story->id = 2;
$story->isParent = '1';
$story->grade = 3;
$story->type = 'story';
r($storyTest->syncGradeTest($oldStory, $story)) && p('5:grade') && e('4'); // 步骤3父需求2同步子需求5子需求grade从3变为4
// 步骤4测试多个子需求的同步情况 (父需求1有子需求3,4)
$oldStory = new stdclass();
$oldStory->id = 1;
$oldStory->isParent = '1';
$oldStory->grade = 1;
$oldStory->type = 'story';
$story = new stdclass();
$story->id = 1;
$story->isParent = '1';
$story->grade = 2;
$story->type = 'story';
r($storyTest->syncGradeTest($oldStory, $story)) && p('3:grade;4:grade') && e('4;4'); // 步骤4多子需求同步子需求grade从3变为4
// 步骤5测试层级变更为更低等级的情况
$oldStory = new stdclass();
$oldStory->id = 2;
$oldStory->isParent = '1';
$oldStory->grade = 3;
$oldStory->type = 'story';
$story = new stdclass();
$story->id = 2;
$story->isParent = '1';
$story->grade = 1;
$story->type = 'story';
r($storyTest->syncGradeTest($oldStory, $story)) && p('5:grade') && e('2'); // 步骤5层级降级同步子需求grade从4变为2