znt/module/weekly/test/lib/model.class.php

499 lines
11 KiB
PHP

<?php
declare(strict_types = 1);
require_once dirname(__FILE__, 5) . '/test/lib/test.class.php';
class weeklyModelTest extends baseTest
{
protected $moduleName = 'weekly';
protected $className = 'model';
/**
* GetPageNav
*
* @param int $projectID
* @param string $date
* @access public
* @return string
*/
public function getPageNavTest($projectID, $date)
{
// 创建模拟项目对象,避免数据库查询
$project = new stdClass();
$project->id = $projectID;
$project->name = '项目' . $projectID;
$project->status = 'doing'; // 默认状态
$project->realBegan = '2022-04-01';
$project->realEnd = '2022-12-31';
$project->suspendedDate = '2022-06-01';
// 根据项目ID设置不同的状态用于测试
if($projectID == '17') $project->status = 'wait';
if($projectID == '18') $project->status = 'suspended';
if($projectID == '20') $project->status = 'closed';
$pageNav = $this->instance->getPageNav($project, $date);
if(dao::isError()) return dao::getError();
// 解析HTML中的项目名称
// HTML格式: <a href='###' class='btn'>周报-项目名称</a>
preg_match("/class='btn'>([^<]+)<\/a>/", $pageNav, $matches);
if(isset($matches[1])) {
return trim($matches[1]);
}
return '';
}
/**
* GetWeekPairs
*
* @param int $begin
* @param int $end
* @access public
* @return array
*/
public function getWeekPairsTest($begin, $end)
{
switch($begin)
{
case '1':
$begin = '2023-04-24';
break;
case '2':
$begin = date('Y-m-d', strtotime('2023-04-24' . "- 10 days"));
break;
case '3':
$begin = date('Y-m-d', strtotime('2023-04-24' . "+ 10 days"));
break;
case '':
$begin = '';
break;
}
switch($end)
{
case '1':
$end = '2023-04-24';
break;
case '2':
$end = date('Y-m-d', strtotime('2023-04-24' . "- 10 days"));
break;
case '3':
$end = date('Y-m-d', strtotime('2023-04-24' . "+ 10 days"));
break;
case '':
$end = '';
break;
}
$objects = $this->instance->getWeekPairs($begin, $end);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* GetFromDB
*
* @param int $project
* @param string $date
* @access public
* @return object
*/
public function getFromDBTest($project, $date)
{
$objects = $this->instance->getFromDB($project, $date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Save data.
*
* @param int $project
* @param string $date
* @access public
* @return void
*/
public function saveTest($project, $date)
{
$objects = $this->instance->save($project, $date);
if(dao::isError()) return dao::getError();
$weekly = $this->instance->getFromDB($project, $date);
return $weekly;
}
/**
* GetWeekSN
*
* @param string $begin
* @param string $date
* @access public
* @return int
*/
public function getWeekSNTest($begin, $date)
{
$objects = $this->instance->getWeekSN($begin, $date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Get monday for a date.
*
* @param string $date
* @access public
* @return date
*/
public function getThisMondayTest($date)
{
$objects = $this->instance->getThisMonday($date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* GetThisSunday
*
* @param string $date
* @access public
* @return date
*/
public function getThisSundayTest($date)
{
$objects = $this->instance->getThisSunday($date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* GetLastDay
*
* @param string $date
* @access public
* @return string
*/
public function getLastDayTest($date)
{
$objects = $this->instance->getLastDay($date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test getStaff
*
* @param int $project
* @param string $date
* @access public
* @return array
*/
public function getStaffTest($project, $date = '')
{
$objects = $this->instance->getStaff($project, $date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test getFinished
*
* @param int $project
* @param string $date
* @access public
* @return void
*/
public function getFinishedTest($project, $date = '')
{
$objects = $this->instance->getFinished($project, $date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test getPostponed
*
* @param int $project
* @param string $date
* @access public
* @return void
*/
public function getPostponedTest($project, $date = '')
{
$objects = $this->instance->getPostponed($project, $date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test getTasksOfNextWeek
*
* @param int $project
* @param string $date
* @access public
* @return void
*/
public function getTasksOfNextWeekTest($project, $date = '')
{
$objects = $this->instance->getTasksOfNextWeek($project, $date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test getWorkloadByType
*
* @param int $project
* @param string $date
* @access public
* @return object
*/
public function getWorkloadByTypeTest($project, $date = '')
{
$objects = $this->instance->getWorkloadByType($project, $date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test getPlanedTaskByWeek
*
* @param int $project
* @param string $date
* @access public
* @return array
*/
public function getPlanedTaskByWeekTest($project, $date = '')
{
$objects = $this->instance->getPlanedTaskByWeek($project, $date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test getPVEV
*
* @param int $project
* @param string $date
* @access public
* @return int
*/
public function getPVEVTest($projectID, $date = '')
{
$objects = $this->instance->getPVEV($projectID, $date);
if(dao::isError()) return dao::getError();
return $objects['PV'] . ',' . $objects['EV'];
}
/**
* Test get AC data.
*
* @param int $project
* @param string $date
* @access public
* @return int
*/
public function getACTest($project, $date = '')
{
$objects = $this->instance->getAC($project, $date);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get SV data.
*
* @param int $ev
* @param int $pv
* @access public
* @return int
*/
public function getSVTest($ev, $pv)
{
$objects = $this->instance->getSV($ev, $pv);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test getCV
*
* @param int $ev
* @param int $ac
* @access public
* @return int
*/
public function getCVTest($ev, $ac)
{
$objects = $this->instance->getCV($ev, $ac);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test getTips
*
* @param string $type
* @param int $data
* @access public
* @return string
*/
public function getTipsTest($type = 'progress', $data = 0)
{
$objects = $this->instance->getTips($type, $data);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* 添加内置报告模板范围。
* Add built-in report template scope.
*
* @access public
* @return bool|object
*/
public function addBuiltinScopeTest(): bool|object
{
$scopeID = $this->instance->addBuiltinScope();
if(!$scopeID) return false;
if(dao::isError()) return dao::getError();
$scope = $this->instance->dao->select('*')->from(TABLE_DOCLIB)->where('id')->eq($scopeID)->fetch();
return $scope ? $scope : false;
}
/**
* 添加内置分类。
* Add built-in category.
*
* @access public
* @return object
*/
public function addBuiltinCategoryTest(): object
{
$scopeID = $this->instance->addBuiltinScope();
$categroyID = $this->instance->addBuiltinCategory($scopeID);
if(dao::isError()) return dao::getError();
return $this->instance->dao->select('*')->from(TABLE_MODULE)->where('id')->eq($categroyID)->fetch();
}
/**
* 添加内置报告模板。
* Add builtin report template.
*
* @access public
* @return array|object
*/
public function addBuiltinTemplateTest(): array|object
{
$scopeID = $this->instance->addBuiltinScope();
$categroyID = $this->instance->addBuiltinCategory($scopeID);
$this->instance->addBuiltinTemplate($scopeID, $categroyID, array());
if(dao::isError()) return dao::getError();
return $this->instance->dao->select('*')->from(TABLE_DOC)->fetch();
}
/**
* 获取内置项目周报模板内容。
* Get builtin project weekly report template content.
*
* @access public
* @return array
*/
public function getBuildinRawContentTest(): array
{
$content = $this->instance->getBuildinRawContent(array());
return json_decode($content, true);
}
/**
* 添加内置项目周报模板。
* Add builtin project weekly report template.
*
* @access public
* @return bool|object
*/
public function addBuiltinWeeklyTemplateTest():bool|object
{
try
{
$result = $this->instance->addBuiltinWeeklyTemplate();
if(!$result) return false;
$doc = $this->instance->dao->select('*')->from(TABLE_DOC)->where('templateType')->eq('reportTemplate')->orderBy('id desc')->fetch();
return $doc ? $doc : true;
}
catch(Exception $e)
{
return false;
}
}
/**
* Test getLeft
*
* @param int $projectID
* @param string $date
* @access public
* @return float
*/
public function getLeftTest($projectID, $date = '')
{
$objects = $this->instance->getLeft($projectID, $date);
if(dao::isError()) return dao::getError();
return $objects;
}
}