* Refactor design::update unit test.

This commit is contained in:
tianshujie
2023-12-14 16:47:37 +08:00
parent 24903b4d03
commit 4f4e950dc9
2 changed files with 69 additions and 47 deletions
+17 -19
View File
@@ -68,33 +68,31 @@ class designTest
}
/**
* Function update test by desgin
* 编辑一个设计。
* Update a design.
*
* @param int $designID
* @param array $param
* @param int $designID
* @param array $data
* @access public
* @return array
* @return array|bool
*/
public function updateTest($designID, $param = array())
public function updateTest(int $designID, array $data = array()): array|bool
{
global $tester;
$oldDesign = $this->objectModel->dao->select('*')->from(TABLE_DESIGN)->where('id')->eq($designID)->fetch();
$fields = array('product', 'name', 'story', 'desc', 'type');
$labels = array();
$files = array();
$design = new stdClass();
$design->editedBy = $this->objectModel->app->user->account;
$design->editedDate = helper::now();
if($oldDesign)
{
foreach($fields as $field) $design->{$field} = isset($data[$field]) ? $data[$field] : $oldDesign->{$field};
}
$createFields = $tester->dao->select('`product`,`story`,`type`,`name`,`desc`')->from(TABLE_DESIGN)->where('id')->eq($designID)->fetchAll();
$createFields[0]->labels = $labels;
$createFields[0]->files = $files;
foreach($createFields[0] as $field => $defaultValue) $_POST[$field] = $defaultValue;
foreach($param as $key => $value) $_POST[$key] = $value;
$objects = $this->objectModel->update($designID);
unset($_POST);
$changes = $this->objectModel->update($designID, $design);
if(dao::isError()) return dao::getError();
return $objects;
return $changes;
}
/**
+52 -28
View File
@@ -1,41 +1,65 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/design.class.php';
su('admin');
/**
title=测试 designModel->update();
cid=1
pid=1
修改设计类型 >> type,HLDS,DDS
修改设计需求 >> story,0,17
修改设计产品 >> product,31,21
修改设计名称 >> name,这是一个设计1,修改设计
修改设计详情 >> desc,这是设计描述1,详情修改
设计名称不能为空 >> 『设计名称』不能为空。
设计类型不能为空 >> 『设计类型』不能为空。
- 修改设计的所属产品
- 第0条的field属性 @product
- 第0条的old属性 @0
- 第0条的new属性 @1
- 修改设计的名称
- 第0条的field属性 @name
- 第0条的old属性 @设计2
- 第0条的new属性 @修改后的名字
- 修改设计的类型
- 第0条的field属性 @type
- 第0条的old属性 @DBDS
- 第0条的new属性 @HLDS
- 修改设计的所属故事
- 第0条的field属性 @story
- 第0条的old属性 @~~
- 第0条的new属性 @1
- 修改设计的描述
- 第0条的field属性 @desc
- 第0条的old属性 @这是设计描述5
- 第0条的new属性 @修改后的描述
- 测试ID为空 @0
- 测试ID不存在 @0
- 测试名称为空第name条的0属性 @『设计名称』不能为空。
- 测试类型为空第type条的0属性 @『设计类型』不能为空。
*/
$designIDList = array('1', '2', '3');
$updateType = array('type' => 'DDS');
$updateStory = array('story' => '17');
$updateProduct = array('product' => '21');
$updateName = array('name' => '修改设计');
$updateDesc = array('desc' => '详情修改');
$noName = array('name' => '');
$noType = array('type' => '');
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/design.class.php';
$design = new designTest();
zdTable('design')->config('design')->gen(5);
zdTable('designspec')->config('designspec')->gen(5);
zdTable('user')->gen(5);
r($design->updateTest($designIDList[0],$updateType)) && p('0:field,old,new') && e('type,HLDS,DDS'); //修改设计类型
r($design->updateTest($designIDList[1],$updateStory)) && p('0:field,old,new') && e('story,0,17'); //修改设计需求
r($design->updateTest($designIDList[2],$updateProduct)) && p('0:field,old,new') && e('product,31,21'); //修改设计产品
r($design->updateTest($designIDList[0],$updateName)) && p('0:field,old,new') && e('name,这是一个设计1,修改设计');//修改设计名称
r($design->updateTest($designIDList[0],$updateDesc)) && p('0:field,old,new') && e('desc,这是设计描述1,详情修改');//修改设计详情
r($design->updateTest($designIDList[0],$noName)) && p('name:0') && e('『设计名称』不能为空。'); //设计名称不能为空
r($design->updateTest($designIDList[0],$noType)) && p('type:0') && e('『设计类型』不能为空。'); //设计类型不能为空
$idList = array(1, 2, 3, 4, 5, 0, 6);
$changeProduct = array('product' => 1);
$changeName = array('name' => '修改后的名字');
$changeType = array('type' => 'HLDS');
$changeStory = array('story' => 1);
$changeDesc = array('desc' => '修改后的描述');
$emptyName = array('name' => '');
$emptyType = array('type' => '');
$designTester = new designTest();
/* Normal condition. */
r($designTester->updateTest($idList[0], $changeProduct)) && p('0:field,old,new') && e('product,0,1'); // 修改设计的所属产品
r($designTester->updateTest($idList[1], $changeName)) && p('0:field,old,new') && e('name,设计2,修改后的名字'); // 修改设计的名称
r($designTester->updateTest($idList[2], $changeType)) && p('0:field,old,new') && e('type,DBDS,HLDS'); // 修改设计的类型
r($designTester->updateTest($idList[3], $changeStory)) && p('0:field,old,new') && e('story,~~,1'); // 修改设计的所属故事
r($designTester->updateTest($idList[4], $changeDesc)) && p('0:field,old,new') && e('desc,这是设计描述5,修改后的描述'); // 修改设计的描述
/* Error condition. */
r($designTester->updateTest($idList[5], $changeProduct)) && p() && e('0'); // 测试ID为空
r($designTester->updateTest($idList[6], $changeName)) && p() && e('0'); // 测试ID不存在
r($designTester->updateTest($idList[0], $emptyName)) && p('name:0') && e('『设计名称』不能为空。'); // 测试名称为空
r($designTester->updateTest($idList[0], $emptyType)) && p('type:0') && e('『设计类型』不能为空。'); // 测试类型为空