+ [misc] Add unit tests for searchTao::checkProductPriv() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-11-07 10:30:57 +08:00
co-authored by Claude
parent 0a50a9432a
commit 8b3a8ecec9
3 changed files with 207 additions and 0 deletions
+16
View File
@@ -125,4 +125,20 @@ class searchTaoTest extends baseTest
if(dao::isError()) return dao::getError();
return $result;
}
/**
* Test checkProductPriv method.
*
* @param array $results
* @param array $objectIdList
* @param string $products
* @access public
* @return array
*/
public function checkProductPrivTest(array $results, array $objectIdList, string $products): array
{
$result = $this->invokeArgs('checkProductPriv', [$results, $objectIdList, $products]);
if(dao::isError()) return dao::getError();
return $result;
}
}
+60
View File
@@ -0,0 +1,60 @@
#!/usr/bin/env php
<?php
/**
title=测试 searchTao::checkProductPriv();
timeout=0
cid=0
- 执行searchTest模块的checkProductPrivTest方法,参数是$results1, $objectIdList1, $products1 第1条的objectID属性 @1
- 执行searchTest模块的checkProductPrivTest方法,参数是$results2, $objectIdList2, $products2 @0
- 执行searchTest模块的checkProductPrivTest方法,参数是$results3, $objectIdList3, $products3 @0
- 执行searchTest模块的checkProductPrivTest方法,参数是$results4, $objectIdList4, $products4 @0
- 执行searchTest模块的checkProductPrivTest方法,参数是$results5, $objectIdList5, $products5
- 第1条的objectID属性 @1
- 第3条的objectID属性 @3
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/tao.class.php';
$product = zenData('product');
$product->id->range('1-10');
$product->name->range('Product1,Product2,Product3,Product4,Product5,Product6,Product7,Product8,Product9,Product10');
$product->code->range('code1,code2,code3,code4,code5,code6,code7,code8,code9,code10');
$product->shadow->range('0,0,0,0,0,0,0,1,1,1');
$product->type->range('normal');
$product->status->range('normal');
$product->acl->range('open');
$product->gen(10);
su('admin');
$searchTest = new searchTaoTest();
$results1 = array(1 => (object)array('id' => 1, 'objectID' => 1, 'objectType' => 'product', 'title' => 'Test Result 1'));
$objectIdList1 = array(1 => 1);
$products1 = '1,2,3,4,5,6,7';
r($searchTest->checkProductPrivTest($results1, $objectIdList1, $products1)) && p('1:objectID') && e('1');
$results2 = array(2 => (object)array('id' => 2, 'objectID' => 2, 'objectType' => 'product', 'title' => 'Test Result 2'));
$objectIdList2 = array(2 => 2);
$products2 = '1,3,4,5,6,7';
r(count($searchTest->checkProductPrivTest($results2, $objectIdList2, $products2))) && p() && e('0');
$results3 = array(4 => (object)array('id' => 4, 'objectID' => 8, 'objectType' => 'product', 'title' => 'Test Result 4'));
$objectIdList3 = array(8 => 4);
$products3 = '1,2,3,4,5,6,7,8,9,10';
r(count($searchTest->checkProductPrivTest($results3, $objectIdList3, $products3))) && p() && e('0');
$results4 = array();
$objectIdList4 = array();
$products4 = '1,2,3,4,5,6,7';
r(count($searchTest->checkProductPrivTest($results4, $objectIdList4, $products4))) && p() && e('0');
$results5 = array(1 => (object)array('id' => 1, 'objectID' => 1, 'objectType' => 'product', 'title' => 'Test Result 1'), 2 => (object)array('id' => 2, 'objectID' => 2, 'objectType' => 'product', 'title' => 'Test Result 2'), 3 => (object)array('id' => 3, 'objectID' => 3, 'objectType' => 'product', 'title' => 'Test Result 3'), 4 => (object)array('id' => 4, 'objectID' => 8, 'objectType' => 'product', 'title' => 'Test Result 4'), 5 => (object)array('id' => 5, 'objectID' => 9, 'objectType' => 'product', 'title' => 'Test Result 5'), 6 => (object)array('id' => 6, 'objectID' => 10, 'objectType' => 'product', 'title' => 'Test Result 6'));
$objectIdList5 = array(1 => 1, 2 => 2, 3 => 3, 8 => 4, 9 => 5, 10 => 6);
$products5 = '1,3,5,6,7';
r($searchTest->checkProductPrivTest($results5, $objectIdList5, $products5)) && p('1:objectID;3:objectID') && e('1;3');
@@ -0,0 +1,131 @@
---
title: Product data for checkProductPriv test
author: Claude
version: 1.0
fields:
- field: id
note: Product ID
range: 1-10
prefix: ""
postfix: ""
- field: program
note: Program ID
range: 0
- field: name
note: Product name
range: Product1,Product2,Product3,Product4,Product5,Product6,Product7,Product8,Product9,Product10
prefix: ""
postfix: ""
- field: code
note: Product code
range: code1,code2,code3,code4,code5,code6,code7,code8,code9,code10
prefix: ""
postfix: ""
- field: shadow
note: Shadow flag (0=normal, 1=shadow)
range: 0,0,0,0,0,0,0,1,1,1
- field: bind
note: Bind flag
range: '0'
- field: line
note: Product line
range: 0
- field: type
note: Product type
range: normal
- field: status
note: Product status
range: normal
- field: subStatus
note: Product sub status
range: ""
- field: desc
note: Product description
range: Test product description
- field: PO
note: Product owner
range: admin
- field: QD
note: QD
range: ""
- field: RD
note: RD
range: ""
- field: feedback
note: Feedback
range: ""
- field: ticket
note: Ticket
range: ""
- field: workflowGroup
note: Workflow group
range: 0
- field: acl
note: ACL
range: open
- field: groups
note: Groups
range: ""
- field: whitelist
note: Whitelist
range: ""
- field: reviewer
note: Reviewer
range: ""
- field: PMT
note: PMT
range: ""
- field: draftEpics
note: Draft epics
range: 0
- field: activeEpics
note: Active epics
range: 0
- field: changingEpics
note: Changing epics
range: 0
- field: reviewingEpics
note: Reviewing epics
range: 0
- field: finishedEpics
note: Finished epics
range: 0
- field: closedEpics
note: Closed epics
range: 0
- field: totalEpics
note: Total epics
range: 0
- field: draftRequirements
note: Draft requirements
range: 0