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

105 lines
3.8 KiB
PHP
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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