From c848604b41cf022cbf84126ee88b191634766d93 Mon Sep 17 00:00:00 2001 From: liugang Date: Tue, 11 Nov 2025 06:43:03 +0800 Subject: [PATCH] + [misc] Add unit tests for programZen::getKanbanList() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../test/lib/programzen.unittest.class.php | 17 ++ module/program/test/zen/getkanbanlist.php | 38 ++++ .../test/zen/yaml/getkanbanlist/product.yaml | 90 ++++++++ .../zen/yaml/getkanbanlist/productplan.yaml | 61 ++++++ .../test/zen/yaml/getkanbanlist/project.yaml | 194 ++++++++++++++++++ .../yaml/getkanbanlist/projectproduct.yaml | 17 ++ .../test/zen/yaml/getkanbanlist/release.yaml | 82 ++++++++ .../zen/yaml/getkanbanlist/stakeholder.yaml | 48 +++++ 8 files changed, 547 insertions(+) create mode 100755 module/program/test/zen/getkanbanlist.php create mode 100644 module/program/test/zen/yaml/getkanbanlist/product.yaml create mode 100644 module/program/test/zen/yaml/getkanbanlist/productplan.yaml create mode 100644 module/program/test/zen/yaml/getkanbanlist/project.yaml create mode 100644 module/program/test/zen/yaml/getkanbanlist/projectproduct.yaml create mode 100644 module/program/test/zen/yaml/getkanbanlist/release.yaml create mode 100644 module/program/test/zen/yaml/getkanbanlist/stakeholder.yaml diff --git a/module/program/test/lib/programzen.unittest.class.php b/module/program/test/lib/programzen.unittest.class.php index 9af2fc25c7..4662dade4a 100644 --- a/module/program/test/lib/programzen.unittest.class.php +++ b/module/program/test/lib/programzen.unittest.class.php @@ -79,4 +79,21 @@ class programTest return $result; } + + /** + * Test getKanbanList method. + * + * @param string $browseType + * @access public + * @return array + */ + public function getKanbanListTest(string $browseType = 'my') + { + $method = $this->objectZen->getMethod('getKanbanList'); + $method->setAccessible(true); + $result = $method->invokeArgs($this->objectZen->newInstance(), array($browseType)); + if(dao::isError()) return dao::getError(); + + return $result; + } } \ No newline at end of file diff --git a/module/program/test/zen/getkanbanlist.php b/module/program/test/zen/getkanbanlist.php new file mode 100755 index 0000000000..4474ed2095 --- /dev/null +++ b/module/program/test/zen/getkanbanlist.php @@ -0,0 +1,38 @@ +#!/usr/bin/env php +loadYaml('getkanbanlist/project', false, 2)->gen(50); +zenData('product')->loadYaml('getkanbanlist/product', false, 2)->gen(30); +zenData('productplan')->loadYaml('getkanbanlist/productplan', false, 2)->gen(40); +zenData('release')->loadYaml('getkanbanlist/release', false, 2)->gen(30); +zenData('projectproduct')->loadYaml('getkanbanlist/projectproduct', false, 2)->gen(25); +zenData('stakeholder')->loadYaml('getkanbanlist/stakeholder', false, 2)->gen(50); + +su('admin'); + +$programTest = new programTest(); + +r(is_array($programTest->getKanbanListTest())) && p() && e('1'); // 测试步骤1:默认参数my获取看板列表 +r(is_array($programTest->getKanbanListTest('my'))) && p() && e('1'); // 测试步骤2:参数为my获取看板列表 +r(is_array($programTest->getKanbanListTest('other'))) && p() && e('1'); // 测试步骤3:参数为other获取看板列表 +r(is_array($programTest->getKanbanListTest(''))) && p() && e('1'); // 测试步骤4:参数为空字符串获取看板列表 +r(count($programTest->getKanbanListTest('my')) >= 0) && p() && e('1'); // 测试步骤5:测试返回数组长度 +r(gettype($programTest->getKanbanListTest('my'))) && p() && e('array'); // 测试步骤6:验证方法可正常调用无错误 \ No newline at end of file diff --git a/module/program/test/zen/yaml/getkanbanlist/product.yaml b/module/program/test/zen/yaml/getkanbanlist/product.yaml new file mode 100644 index 0000000000..5889a21cbc --- /dev/null +++ b/module/program/test/zen/yaml/getkanbanlist/product.yaml @@ -0,0 +1,90 @@ +--- +title: 产品测试数据 +desc: 用于getKanbanList方法的产品测试数据 + +fields: +- field: id + note: ID + range: 1-30 + prefix: "" + postfix: "" +- field: program + note: 所属项目集 + range: 0{5},1{8},2{7},3{5},4{5} +- field: name + note: 产品名称 + range: '产品A{5},产品B{5},产品C{5},产品D{5},产品E{5},产品F{5}' +- field: code + note: 产品代码 + range: '' +- field: shadow + note: 影子产品 + range: 0 +- field: bind + note: 绑定 + range: '0' +- field: line + note: 产品线 + range: 0 +- field: type + note: 类型 + range: normal +- field: status + note: 状态 + range: normal +- field: subStatus + note: 子状态 + range: '' +- field: desc + note: 描述 + range: '' +- field: PO + note: 产品负责人 + range: admin{15},user1{8},user2{7} +- field: QD + note: QD + range: '' +- field: RD + note: RD + range: '' +- field: feedback + note: 反馈 + range: '' +- field: ticket + note: 工单 + range: '' +- field: workflowGroup + note: 工作流组 + range: 0 +- field: acl + note: 访问控制 + range: open +- field: groups + note: 分组 + range: '' +- field: whitelist + note: 白名单 + range: '' +- field: reviewer + note: 评审者 + range: '' +- field: createdBy + note: 创建者 + range: admin +- field: createdDate + note: 创建时间 + range: '(-6M)-(-1M):30D' + type: timestamp + format: YYYY-MM-DD hh:mm:ss +- field: createdVersion + note: 创建版本 + range: '' +- field: order + note: 排序 + range: 0 +- field: vision + note: 视图 + range: rnd +- field: deleted + note: 已删除 + range: '0' diff --git a/module/program/test/zen/yaml/getkanbanlist/productplan.yaml b/module/program/test/zen/yaml/getkanbanlist/productplan.yaml new file mode 100644 index 0000000000..f472c3226a --- /dev/null +++ b/module/program/test/zen/yaml/getkanbanlist/productplan.yaml @@ -0,0 +1,61 @@ +--- +title: 产品计划测试数据 +desc: 用于getKanbanList方法的产品计划测试数据 + +fields: +- field: id + note: ID + range: 1-40 + prefix: "" + postfix: "" +- field: product + note: 所属产品 + range: 1-30:R +- field: branch + note: 分支 + range: '0' +- field: parent + note: 父计划 + range: 0 +- field: title + note: 计划名称 + range: '计划1.0{10},计划2.0{10},计划3.0{10},计划4.0{5},计划5.0{5}' +- field: status + note: 状态 + range: '[wait]{10},[doing]{15},[done]{10},[closed]{5}' +- field: desc + note: 描述 + range: '' +- field: begin + note: 开始时间 + range: '(-3M)-(-1M):30D' + type: timestamp + format: YYYY-MM-DD +- field: end + note: 结束时间 + range: '(+1M)-(+6M):60D' + type: timestamp + format: YYYY-MM-DD +- field: finishedDate + note: 完成时间 + range: '[]' +- field: closedDate + note: 关闭时间 + range: '[]' +- field: order + note: 排序 + range: '' +- field: closedReason + note: 关闭原因 + range: '' +- field: createdBy + note: 创建者 + range: admin +- field: createdDate + note: 创建时间 + range: '(-3M)-(-1M):30D' + type: timestamp + format: YYYY-MM-DD hh:mm:ss +- field: deleted + note: 已删除 + range: '0' diff --git a/module/program/test/zen/yaml/getkanbanlist/project.yaml b/module/program/test/zen/yaml/getkanbanlist/project.yaml new file mode 100644 index 0000000000..1c861a5d71 --- /dev/null +++ b/module/program/test/zen/yaml/getkanbanlist/project.yaml @@ -0,0 +1,194 @@ +--- +title: 项目集和项目测试数据 +desc: 用于getKanbanList方法的项目集测试数据 + +fields: +- field: id + note: ID + range: 1-50 + prefix: "" + postfix: "" +- field: project + note: 所属项目 + range: 0 +- field: isTpl + note: 是否模板 + range: 0 +- field: charter + note: 章程 + range: 0 +- field: model + note: 模型 + range: '' +- field: type + note: 类型 + range: '[program]{20},[project]{10},[sprint]{5},[stage]{5},[kanban]{5},[waterfallplus]{5}' +- field: category + note: 分类 + range: '' +- field: lifetime + note: 生命周期 + range: '' +- field: budget + note: 预算 + range: '0' +- field: budgetUnit + note: 预算单位 + range: CNY +- field: attribute + note: 属性 + range: '' +- field: percent + note: 百分比 + range: 0 +- field: milestone + note: 里程碑 + range: '0' +- field: output + note: 输出 + range: '' +- field: auth + note: 权限 + range: '' +- field: storyType + note: 需求类型 + range: '' +- field: parent + note: 父项目集 + range: 0{30},1{10},2{10} +- field: path + note: 路径 + range: '`,`' +- field: grade + note: 等级 + range: 1{30},2{20} +- field: name + note: 名称 + range: '顶级项目集{10},子项目集{10},项目{20},执行{10}' +- field: code + note: 代码 + range: '' +- field: hasProduct + note: 是否有产品 + range: '0' +- field: begin + note: 开始时间 + range: '(-6M)-(-1M):60D' + type: timestamp + format: YYYY-MM-DD +- field: end + note: 结束时间 + range: '(+1M)-(+12M):60D' + type: timestamp + format: YYYY-MM-DD +- field: realBegan + note: 实际开始时间 + range: '(-5M)-(-1M):60D,[]{10}' + type: timestamp + format: YYYY-MM-DD +- field: realEnd + note: 实际结束时间 + range: '[]{45},(-1M)-(+1M):60D' + type: timestamp + format: YYYY-MM-DD +- field: status + note: 状态 + range: '[wait]{15},[doing]{20},[suspended]{5},[closed]{10}' +- field: subStatus + note: 子状态 + range: '' +- field: pri + note: 优先级 + range: 1-4 +- field: desc + note: 描述 + range: '' +- field: version + note: 版本 + range: 1 +- field: parentVersion + note: 父版本 + range: 1 +- field: planDuration + note: 计划工期 + range: 0 +- field: realDuration + note: 实际工期 + range: 0 +- field: openedBy + note: 创建者 + range: admin{30},user1{10},user2{10} +- field: openedDate + note: 创建时间 + range: '(-6M)-(-1M):30D' + type: timestamp + format: YYYY-MM-DD hh:mm:ss +- field: openedVersion + note: 创建版本 + range: '' +- field: lastEditedBy + note: 最后编辑者 + range: '[]' +- field: lastEditedDate + note: 最后编辑时间 + range: '[]' +- field: closedBy + note: 关闭者 + range: '[]' +- field: closedDate + note: 关闭时间 + range: '[]' +- field: canceledBy + note: 取消者 + range: '[]' +- field: canceledDate + note: 取消时间 + range: '[]' +- field: suspendedDate + note: 挂起时间 + range: '[]' +- field: PO + note: 产品负责人 + range: '[]' +- field: PM + note: 项目经理 + range: admin{30},user1{10},user2{10} +- field: QD + note: QD + range: '[]' +- field: RD + note: RD + range: '[]' +- field: team + note: 团队 + range: '[]' +- field: acl + note: 访问控制 + range: open +- field: whitelist + note: 白名单 + range: '[]' +- field: order + note: 排序 + range: 0 +- field: deleted + note: 已删除 + range: '0' +- field: vision + note: 视图 + range: rnd +- field: displayCards + note: 显示卡片 + range: 0 +- field: fluidBoard + note: 流体看板 + range: '0' +- field: colWidth + note: 列宽 + range: 264 +- field: minColWidth + note: 最小列宽 + range: 200 +- field: maxColWidth + note: 最大列宽 + range: 384 diff --git a/module/program/test/zen/yaml/getkanbanlist/projectproduct.yaml b/module/program/test/zen/yaml/getkanbanlist/projectproduct.yaml new file mode 100644 index 0000000000..86d5edd4ca --- /dev/null +++ b/module/program/test/zen/yaml/getkanbanlist/projectproduct.yaml @@ -0,0 +1,17 @@ +--- +title: 项目产品关联测试数据 +desc: 用于getKanbanList方法的项目产品关联测试数据 + +fields: +- field: project + note: 项目ID + range: 21-45 +- field: product + note: 产品ID + range: 1-30:R +- field: branch + note: 分支 + range: '0' +- field: plan + note: 计划 + range: '' diff --git a/module/program/test/zen/yaml/getkanbanlist/release.yaml b/module/program/test/zen/yaml/getkanbanlist/release.yaml new file mode 100644 index 0000000000..86026bbdfa --- /dev/null +++ b/module/program/test/zen/yaml/getkanbanlist/release.yaml @@ -0,0 +1,82 @@ +--- +title: 发布测试数据 +desc: 用于getKanbanList方法的发布测试数据 + +fields: +- field: id + note: ID + range: 1-30 + prefix: "" + postfix: "" +- field: project + note: 所属项目 + range: '0' +- field: product + note: 所属产品 + range: 1-30:R +- field: branch + note: 分支 + range: '0' +- field: shadow + note: 影子发布 + range: 0 +- field: build + note: 版本 + range: '' +- field: name + note: 发布名称 + range: '发布V1.0{10},发布V2.0{10},发布V3.0{10}' +- field: system + note: 系统 + range: 0 +- field: releases + note: 发布 + range: '' +- field: marker + note: 标记 + range: '0' +- field: date + note: 发布日期 + range: '(-2M)-(+1M):30D' + type: timestamp + format: YYYY-MM-DD +- field: releasedDate + note: 实际发布日期 + range: '(-2M)-(+1M):30D,[]{5}' + type: timestamp + format: YYYY-MM-DD +- field: stories + note: 需求 + range: '' +- field: bugs + note: Bug + range: '' +- field: leftBugs + note: 遗留Bug + range: '' +- field: desc + note: 描述 + range: '' +- field: mailto + note: 邮件通知 + range: '' +- field: notify + note: 通知 + range: '' +- field: status + note: 状态 + range: normal +- field: subStatus + note: 子状态 + range: '' +- field: createdBy + note: 创建者 + range: admin +- field: createdDate + note: 创建时间 + range: '(-2M)-(-1M):15D' + type: timestamp + format: YYYY-MM-DD hh:mm:ss +- field: deleted + note: 已删除 + range: '0' diff --git a/module/program/test/zen/yaml/getkanbanlist/stakeholder.yaml b/module/program/test/zen/yaml/getkanbanlist/stakeholder.yaml new file mode 100644 index 0000000000..225a53cef7 --- /dev/null +++ b/module/program/test/zen/yaml/getkanbanlist/stakeholder.yaml @@ -0,0 +1,48 @@ +--- +title: 干系人测试数据 +desc: 用于getKanbanList方法的干系人测试数据 + +fields: +- field: id + note: ID + range: 1-50 + prefix: "" + postfix: "" +- field: objectID + note: 对象ID + range: 1-20:R +- field: objectType + note: 对象类型 + range: '[program]{30},[project]{20}' +- field: user + note: 用户 + range: admin{20},user1{15},user2{15} +- field: name + note: 名称 + range: '' +- field: type + note: 类型 + range: inside +- field: key + note: 关键 + range: no +- field: from + note: 来源 + range: '' +- field: createdBy + note: 创建者 + range: admin +- field: createdDate + note: 创建时间 + range: '(-3M)-(-1M):15D' + type: timestamp + format: YYYY-MM-DD hh:mm:ss +- field: editedBy + note: 编辑者 + range: '[]' +- field: editedDate + note: 编辑时间 + range: '[]' +- field: deleted + note: 已删除 + range: '0'