From bb9af830f7517c20f942f206247696fe6904708e Mon Sep 17 00:00:00 2001 From: liugang Date: Tue, 23 Sep 2025 00:09:16 +0800 Subject: [PATCH] * [misc] Enhance unit tests for mailModel::setCC() 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 --- module/mail/test/lib/mail.unittest.class.php | 63 ++++++++++++++++++-- module/mail/test/model/setcc.php | 55 ++++++++++++----- 2 files changed, 98 insertions(+), 20 deletions(-) diff --git a/module/mail/test/lib/mail.unittest.class.php b/module/mail/test/lib/mail.unittest.class.php index 7155c1e2b9..80bf079c6d 100755 --- a/module/mail/test/lib/mail.unittest.class.php +++ b/module/mail/test/lib/mail.unittest.class.php @@ -159,18 +159,19 @@ class mailTest } /** - * Set CC. + * Test setCC method. * - * @param int $ccList - * @param int $emails + * @param array $ccList + * @param array $emails * @access public - * @return object + * @return mixed */ public function setCCTest($ccList, $emails) { $this->objectModel->setCC($ccList, $emails); + if(dao::isError()) return dao::getError(); - return $this->setMTATest(); + return $emails; } /** @@ -542,4 +543,56 @@ class mailTest return $result; } + + /** + * Test sendmail method. + * + * @param int $objectID + * @param int $actionID + * @access public + * @return mixed + */ + public function sendmailTest($objectID, $actionID) + { + try + { + ob_start(); + $this->objectModel->sendmail($objectID, $actionID); + $output = ob_get_clean(); + + if(dao::isError()) return dao::getError(); + + $result = new stdClass(); + $result->processed = 1; + $result->objectID = $objectID; + $result->actionID = $actionID; + $result->hasErrors = $this->objectModel->isError() ? 1 : 0; + $result->errors = $this->objectModel->errors; + $result->output = $output; + + return $result; + } + catch(Exception $e) + { + $result = new stdClass(); + $result->processed = 0; + $result->objectID = $objectID; + $result->actionID = $actionID; + $result->error = $e->getMessage(); + $result->hasErrors = 1; + + return $result; + } + catch(TypeError $e) + { + $result = new stdClass(); + $result->processed = 0; + $result->objectID = $objectID; + $result->actionID = $actionID; + $result->error = $e->getMessage(); + $result->hasErrors = 1; + + return $result; + } + } } diff --git a/module/mail/test/model/setcc.php b/module/mail/test/model/setcc.php index dc0228beb0..fe9c07c08a 100755 --- a/module/mail/test/model/setcc.php +++ b/module/mail/test/model/setcc.php @@ -3,29 +3,54 @@ /** -title=测试 mailModel->setCC(); +title=测试 mailModel::setCC(); timeout=0 cid=0 -- 不传入参数,检查admin账号的sended字段 @0 -- 传入ccList参数,检查admin账号的sended字段 @0 -- 传入ccList和mails参数,检查admin账号的sended字段属性sended @1 +- 执行mailTest模块的setCCTest方法,参数是array @0 +- 执行mailTest模块的setCCTest方法,参数是array 第admin条的sended属性 @1 +- 执行mailTest模块的setCCTest方法,参数是array 第user1条的sended属性 @~~ +- 执行mailTest模块的setCCTest方法,参数是array 第admin条的sended属性 @~~ +- 执行mailTest模块的setCCTest方法,参数是array 第admin条的sended属性 @1 */ + include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/lib/mail.unittest.class.php'; + su('admin'); -$mails['admin'] = new stdclass(); -$mails['admin']->email = 'admin@cnezsoft.com'; -$mails['admin']->realname = '管理员'; +$mailTest = new mailTest(); -global $tester; -$mailModel = $tester->loadModel('mail'); -$mailModel->setCC(array(), array()); -r(isset($mails['admin']->sended)) && p() && e('0'); //不传入参数,检查admin账号的sended字段 +// 步骤1:测试空ccList数组情况 +$emails = array(); +r($mailTest->setCCTest(array(), $emails)) && p() && e(0); -$mailModel->setCC(array('admin'), array()); -r(isset($mails['admin']->sended)) && p() && e('0'); //传入ccList参数,检查admin账号的sended字段 +// 步骤2:测试有效ccList和emails情况 +$emails = array(); +$emails['admin'] = new stdClass(); +$emails['admin']->email = 'admin@cnezsoft.com'; +$emails['admin']->realname = '管理员'; +r($mailTest->setCCTest(array('admin'), $emails)) && p('admin:sended') && e('1'); -$mailModel->setCC(array('admin'), $mails); -r($mails['admin']) && p('sended') && e('1'); //传入ccList和mails参数,检查admin账号的sended字段 \ No newline at end of file +// 步骤3:测试emails中缺少对应账号情况 +$emails = array(); +$emails['user1'] = new stdClass(); +$emails['user1']->email = 'user1@cnezsoft.com'; +$emails['user1']->realname = '用户1'; +r($mailTest->setCCTest(array('admin'), $emails)) && p('user1:sended') && e('~~'); + +// 步骤4:测试无效邮箱格式情况 +$emails = array(); +$emails['admin'] = new stdClass(); +$emails['admin']->email = 'invalid-email'; +$emails['admin']->realname = '管理员'; +r($mailTest->setCCTest(array('admin'), $emails)) && p('admin:sended') && e('~~'); + +// 步骤5:测试已发送标记情况 +$emails = array(); +$emails['admin'] = new stdClass(); +$emails['admin']->email = 'admin@cnezsoft.com'; +$emails['admin']->realname = '管理员'; +$emails['admin']->sended = true; +r($mailTest->setCCTest(array('admin'), $emails)) && p('admin:sended') && e('1'); \ No newline at end of file