* Optimize api createStruct function and finish unit test script.

This commit is contained in:
wangyuting
2023-12-01 13:37:37 +08:00
parent f8a66238fc
commit 5771470336
3 changed files with 61 additions and 63 deletions
+1 -1
View File
@@ -268,7 +268,7 @@ class api extends control
if(!empty($_POST))
{
$formData = form::data($this->config->api->form->createStruct)->add('lib', $libID)->add('addedBy', $this->app->user->account)->add('addedDate', helper::now())->get();
$formData = form::data($this->config->api->form->createStruct)->add('lib', $libID)->add('version', 1)->add('addedBy', $this->app->user->account)->add('addedDate', helper::now())->get();
$this->api->createStruct($formData);
if(dao::isError()) return $this->sendError(dao::getError());
+42 -41
View File
@@ -164,51 +164,41 @@ class apiModel extends model
}
/**
* 创建数据结构。
* Create a global struct.
*
* @param object $data
* @param object $formData
* @access public
* @return int
* @return bool
*/
public function createStruct($data)
public function createStruct(object $formData): bool
{
$data->version = 1;
$this->dao->insert(TABLE_APISTRUCT)->data($data)
$this->dao->insert(TABLE_APISTRUCT)->data($formData)
->autoCheck()
->batchCheck($this->config->api->struct->requiredFields, 'notempty')
->exec();
if(dao::isError()) return false;
$id = $this->dao->lastInsertID();
/* 维护历史记录。 */
$structID = $this->dao->lastInsertID();
$this->loadModel('action')->create('apistruct', $structID, 'Created');
/* Create a struct version. */
$version = array(
'name' => $data->name,
'type' => $data->type,
'desc' => $data->desc,
'version' => $data->version,
'attribute' => $data->attribute,
'addedBy' => $data->addedBy,
'addedDate' => $data->addedDate
);
$this->dao->insert(TABLE_APISTRUCT_SPEC)->data($version)->exec();
if(dao::isError()) return false;
$this->loadModel('action')->create('apistruct', $id, 'Created');
return true;
/* 维护数据结构的历史版本。 */
$structSpec = $this->getApiStructSpecByData($formData);
$this->dao->insert(TABLE_APISTRUCT_SPEC)->data($structSpec)->exec();
return !dao::isError();
}
/**
* 更新数据结构。
* Update a struct.
*
* @param object $formData
* @access public
* @return array
* @return bool
*/
public function updateStruct($formData)
public function updateStruct(object $formData): bool
{
$oldData = $this->dao->findByID($formData->id)->from(TABLE_APISTRUCT)->fetch();
@@ -220,20 +210,7 @@ class apiModel extends model
if(dao::isError()) return false;
/* Create a struct version */
$version = array(
'name' => $formData->name,
'type' => $formData->type,
'desc' => $formData->desc,
'version' => $formData->version,
'attribute' => $formData->attribute,
'addedBy' => $formData->editedBy,
'addedDate' => $formData->editedDate
);
$this->dao->insert(TABLE_APISTRUCT_SPEC)->data($version)->exec();
if(dao::isError()) return false;
/* 维护历史记录。 */
$changes = common::createChanges($oldData, $formData);
if($changes)
{
@@ -241,7 +218,11 @@ class apiModel extends model
$this->action->logHistory($actionID, $changes);
}
return true;
/* 维护数据结构的历史版本。 */
$structSpec = $this->getApiStructSpecByData($formData);
$this->dao->insert(TABLE_APISTRUCT_SPEC)->data($structSpec)->exec();
return !dao::isError();
}
/**
@@ -700,7 +681,7 @@ class apiModel extends model
/**
* Get spec of api.
*
* @param object $data
* @param object $data
* @access private
* @return array
*/
@@ -728,6 +709,26 @@ class apiModel extends model
);
}
/**
* Get struct spec of api
*
* @param object $data
* @access private
* @return void
*/
private function getApiStructSpecByData($data)
{
return array(
'name' => $data->name,
'type' => !empty($data->type) ? $data->type : '',
'desc' => !empty($data->desc) ? $data->desc : '',
'version' => !empty($data->version) ? $data->version : 1,
'attribute' => !empty($data->attribute) ? $data->attribute : '',
'addedBy' => !empty($data->addedBy) ? $data->addedBy : $this->app->user->account,
'addedDate' => !empty($data->addedDate) ? $data->addedDate : helper::now()
);
}
/**
* Get Type list.
*
+18 -21
View File
@@ -1,38 +1,35 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/api.class.php';
su('admin');
zdTable('doclib')->config('doclib')->gen(10);
zdTable('apistruct')->gen(0);
zdTable('apistruct_spec')->gen(0);
/**
title=测试 apiModel->createStruct();
timeout=0
cid=1
pid=1
创建数据结构 >> struct
创建没有结构名的数据结构 >> 『结构名』不能为空。
- 测试正常添加数据结构。 @1
- 测试结构名称为空时添加数据结构。 @0
- 测试结构名称为空时添加数据结构返回的错误信息。第name条的0属性 @『结构名』不能为空。
*/
global $tester;
$api = new apiTest();
$tester->loadModel('api');
$emptyNameStruct = new stdclass();
$emptyNameStruct->name = '';
$emptyNameStruct->type = 'formData';
$emptyNameStruct->attribute = '[{"field":"field1","paramsType":"string","required":true,"desc":"desc","structType":"formData","sub":1,"key":"l2u5qy3jc1se6ghigll","children":[]}]';
$emptyNameStruct->desc = '';
$emptyNameStruct->addedBy = $tester->app->user->account;
$emptyNameStruct->addedDate = helper::now();
$formData = new stdclass();
$formData->lib = 1;
$formData->name = '数据结构1';
$normalStruct = new stdclass();
$normalStruct->name = 'struct';
$normalStruct->type = 'formData';
$normalStruct->attribute = '[{"field":"field1","paramsType":"string","required":true,"desc":"desc","structType":"formData","sub":1,"key":"l2u5qy3jc1se6ghigll","children":[]}]';
$normalStruct->desc = '';
$normalStruct->addedBy = $tester->app->user->account;
$normalStruct->addedDate = helper::now();
r($tester->api->createStruct($formData)) && p() && e(1); // 测试正常添加数据结构。
r($api->createStructTest($normalStruct)) && p('name') && e('struct'); //创建数据结构
r($api->createStructTest($emptyNameStruct)) && p('name:0') && e('『结构名』不能为空。'); //创建没有结构名的数据结构
$formData = new stdclass();
$formData->lib = 1;
$formData->name = '';
r($tester->api->createStruct($formData)) && p() && e(0); // 测试结构名称为空时添加数据结构。
r(dao::getError()) && p('name:0') && e('『结构名』不能为空。'); // 测试结构名称为空时添加数据结构返回的错误信息。