znt/module/message/test/model/deleteexpired.php

105 lines
3.8 KiB
PHP
Raw Permalink Normal View History

#!/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');