105 lines
3.8 KiB
PHP
Executable file
105 lines
3.8 KiB
PHP
Executable file
#!/usr/bin/env php
|
||
<?php
|
||
|
||
/**
|
||
|
||
title=测试 messageModel::deleteExpired();
|
||
timeout=0
|
||
cid=17049
|
||
|
||
- 执行messageTest模块的deleteExpiredTest方法,参数是30 @4
|
||
- 执行messageTest模块的deleteExpiredTest方法,参数是7 @4
|
||
- 执行messageTest模块的deleteExpiredTest方法 @6
|
||
- 执行$otherUserCountAfter @3
|
||
- 执行$nonMessageCountAfter @5
|
||
|
||
*/
|
||
|
||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||
|
||
// 使用字段范围设置,避免生成 SQL 文件
|
||
// 需要确保有6条toList包含admin的message记录,删除2条后剩余4条
|
||
$table = zenData('notify');
|
||
$table->objectType->range('message{6}');
|
||
$table->toList->range('`,admin,`');
|
||
$table->status->range('wait{2},sended{2},read{2}');
|
||
$table->action->range('0{3},1-3');
|
||
$table->data->range('test message data');
|
||
$table->createdBy->range('admin');
|
||
$table->gen(6);
|
||
|
||
// 添加其他用户的记录
|
||
$table2 = zenData('notify');
|
||
$table2->objectType->range('message{4},action{5},other{3}');
|
||
$table2->toList->range('`,user1,`,`,user2,`');
|
||
$table2->status->range('wait{2},sended{2}');
|
||
$table2->action->range('0{2},1-2');
|
||
$table2->data->range('test message data');
|
||
$table2->createdBy->range('user1{2},user2{2}');
|
||
$table2->gen(12);
|
||
|
||
zenData('user')->gen(1);
|
||
|
||
su('admin');
|
||
|
||
$messageTest = new messageModelTest();
|
||
|
||
$messageTest->objectModel->app->user->account = 'admin';
|
||
|
||
// 设置部分记录的 createdDate 为32天前,使其在 maxDays=30 时被删除
|
||
$oldDate = date('Y-m-d H:i:s', strtotime('-32 days'));
|
||
$messageTest->objectModel->dao->update(TABLE_NOTIFY)
|
||
->set('createdDate')->eq($oldDate)
|
||
->where('toList')->eq(',admin,')
|
||
->andWhere('objectType')->eq('message')
|
||
->limit(2)
|
||
->exec();
|
||
|
||
r($messageTest->deleteExpiredTest(30)) && p() && e('4');
|
||
|
||
$createdDate = date('Y-m-d H:i:s', strtotime('-8 days'));
|
||
$messageTest->objectModel->dao->update(TABLE_NOTIFY)->set('createdDate')->eq($createdDate)->where('toList')->eq(',admin,')->andWhere('objectType')->eq('message')->exec();
|
||
r($messageTest->deleteExpiredTest(7)) && p() && e('4');
|
||
|
||
zenData('notify')->gen(0);
|
||
$table = zenData('notify');
|
||
$table->objectType->range('message{6}');
|
||
$table->toList->range('`,admin,`');
|
||
$table->status->range('wait{2},sended{2},read{2}');
|
||
$table->action->range('0{3},1-3');
|
||
$table->data->range('test message for deletion');
|
||
$table->createdBy->range('admin');
|
||
$table->gen(6);
|
||
|
||
r($messageTest->deleteExpiredTest(0)) && p() && e('6');
|
||
|
||
zenData('notify')->gen(0);
|
||
$table = zenData('notify');
|
||
$table->objectType->range('message{3}');
|
||
$table->toList->range('`,user1,`,`,user2,`');
|
||
$table->status->range('wait');
|
||
$table->action->range('0');
|
||
$table->data->range('other user message');
|
||
$table->createdBy->range('user1{2},user2{1}');
|
||
$table->gen(3);
|
||
|
||
$otherUserCountBefore = $messageTest->objectModel->dao->select('COUNT(*) as count')->from(TABLE_NOTIFY)->where('toList')->ne(',admin,')->andWhere('objectType')->eq('message')->fetch('count');
|
||
$messageTest->deleteExpiredTest(0);
|
||
$otherUserCountAfter = $messageTest->objectModel->dao->select('COUNT(*) as count')->from(TABLE_NOTIFY)->where('toList')->ne(',admin,')->andWhere('objectType')->eq('message')->fetch('count');
|
||
r($otherUserCountAfter) && p() && e('3');
|
||
|
||
zenData('notify')->gen(0);
|
||
$table = zenData('notify');
|
||
$table->objectType->range('action{5}');
|
||
$table->toList->range('`,admin,`');
|
||
$table->status->range('wait');
|
||
$table->action->range('1-5');
|
||
$table->data->range('action notification');
|
||
$table->createdBy->range('admin');
|
||
$table->gen(5);
|
||
|
||
$nonMessageCountBefore = $messageTest->objectModel->dao->select('COUNT(*) as count')->from(TABLE_NOTIFY)->where('objectType')->ne('message')->fetch('count');
|
||
$messageTest->deleteExpiredTest(0);
|
||
$nonMessageCountAfter = $messageTest->objectModel->dao->select('COUNT(*) as count')->from(TABLE_NOTIFY)->where('objectType')->ne('message')->fetch('count');
|
||
r($nonMessageCountAfter) && p() && e('5'); |