You've already forked think-plugs-recorder
232 lines
7.3 KiB
PHP
232 lines
7.3 KiB
PHP
<?php
|
|
/**
|
|
* think-plugs-recorder 插件测试示例
|
|
*
|
|
* 这个文件演示了如何测试插件的各种功能
|
|
* 使用前请确保已正确安装插件并运行了数据库迁移
|
|
*/
|
|
|
|
// 引入ThinkPHP框架
|
|
require_once __DIR__ . '/../../bootstrap.php';
|
|
|
|
use jerryyan\recorder\service\RecorderService;
|
|
use jerryyan\recorder\helper\ViewHelper;
|
|
|
|
echo "=== think-plugs-recorder 插件测试 ===\n\n";
|
|
|
|
// 测试1: 基础记录功能
|
|
echo "测试1: 基础记录功能\n";
|
|
echo "--------------------\n";
|
|
|
|
try {
|
|
$result = RecorderService::record([
|
|
'operation_type' => '测试',
|
|
'operation_desc' => '测试插件基础记录功能',
|
|
'user_id' => 1,
|
|
'user_nickname' => '测试用户',
|
|
'data_type' => 'test',
|
|
'data_id' => '001'
|
|
]);
|
|
|
|
echo $result ? "✅ 基础记录成功\n" : "❌ 基础记录失败\n";
|
|
} catch (Exception $e) {
|
|
echo "❌ 基础记录异常: " . $e->getMessage() . "\n";
|
|
}
|
|
echo "\n";
|
|
|
|
// 测试2: 自动记录功能
|
|
echo "测试2: 自动记录功能\n";
|
|
echo "--------------------\n";
|
|
|
|
try {
|
|
$result = RecorderService::autoRecord([
|
|
'operation_type' => '自动测试',
|
|
'operation_desc' => '测试插件自动记录功能',
|
|
'data_type' => 'test',
|
|
'data_id' => '002',
|
|
'extra_data' => ['test' => true, 'timestamp' => time()]
|
|
]);
|
|
|
|
echo $result ? "✅ 自动记录成功\n" : "❌ 自动记录失败\n";
|
|
} catch (Exception $e) {
|
|
echo "❌ 自动记录异常: " . $e->getMessage() . "\n";
|
|
}
|
|
echo "\n";
|
|
|
|
// 测试3: 批量记录功能
|
|
echo "测试3: 批量记录功能\n";
|
|
echo "--------------------\n";
|
|
|
|
try {
|
|
$records = [
|
|
[
|
|
'operation_type' => '批量测试1',
|
|
'operation_desc' => '批量记录测试1',
|
|
'user_id' => 1,
|
|
'user_nickname' => '测试用户',
|
|
'data_type' => 'batch_test',
|
|
'data_id' => 'b001'
|
|
],
|
|
[
|
|
'operation_type' => '批量测试2',
|
|
'operation_desc' => '批量记录测试2',
|
|
'user_id' => 1,
|
|
'user_nickname' => '测试用户',
|
|
'data_type' => 'batch_test',
|
|
'data_id' => 'b002'
|
|
],
|
|
[
|
|
'operation_type' => '批量测试3',
|
|
'operation_desc' => '批量记录测试3',
|
|
'user_id' => 1,
|
|
'user_nickname' => '测试用户',
|
|
'data_type' => 'batch_test',
|
|
'data_id' => 'b003'
|
|
]
|
|
];
|
|
|
|
$result = RecorderService::batchRecord($records);
|
|
echo $result ? "✅ 批量记录成功\n" : "❌ 批量记录失败\n";
|
|
} catch (Exception $e) {
|
|
echo "❌ 批量记录异常: " . $e->getMessage() . "\n";
|
|
}
|
|
echo "\n";
|
|
|
|
// 测试4: 查询功能
|
|
echo "测试4: 查询功能\n";
|
|
echo "---------------\n";
|
|
|
|
try {
|
|
// 查询最近的记录
|
|
$recentRecords = RecorderService::query(['limit' => 5]);
|
|
echo "📊 查询到 " . count($recentRecords['data']) . " 条最近记录\n";
|
|
|
|
foreach ($recentRecords['data'] as $record) {
|
|
echo " - {$record['operation_type']}: {$record['operation_desc']} ({$record['created_at']})\n";
|
|
}
|
|
|
|
// 按用户查询
|
|
$userRecords = RecorderService::getUserRecords(1, ['limit' => 3]);
|
|
echo "📊 查询到用户1的 " . count($userRecords['data']) . " 条记录\n";
|
|
|
|
// 按数据类型查询
|
|
$dataRecords = RecorderService::getDataRecords('test');
|
|
echo "📊 查询到test类型的 " . count($dataRecords['data']) . " 条记录\n";
|
|
|
|
} catch (Exception $e) {
|
|
echo "❌ 查询异常: " . $e->getMessage() . "\n";
|
|
}
|
|
echo "\n";
|
|
|
|
// 测试5: 统计功能
|
|
echo "测试5: 统计功能\n";
|
|
echo "---------------\n";
|
|
|
|
try {
|
|
$stats = RecorderService::getStats();
|
|
echo "📈 统计信息:\n";
|
|
echo " - 总记录数: " . $stats['total_count'] . "\n";
|
|
echo " - 操作类型统计:\n";
|
|
|
|
foreach ($stats['type_stats'] as $typeStat) {
|
|
echo " * {$typeStat['operation_type']}: {$typeStat['count']} 次\n";
|
|
}
|
|
|
|
echo " - 用户操作统计 (Top 5):\n";
|
|
foreach (array_slice($stats['user_stats'], 0, 5) as $userStat) {
|
|
echo " * {$userStat['user_nickname']} (ID:{$userStat['user_id']}): {$userStat['count']} 次\n";
|
|
}
|
|
|
|
} catch (Exception $e) {
|
|
echo "❌ 统计异常: " . $e->getMessage() . "\n";
|
|
}
|
|
echo "\n";
|
|
|
|
// 测试6: 视图辅助功能
|
|
echo "测试6: 视图辅助功能\n";
|
|
echo "-------------------\n";
|
|
|
|
try {
|
|
// 测试获取记录数据
|
|
$viewRecords = ViewHelper::getRecords(['limit' => 3]);
|
|
echo "🎨 视图辅助获取到 " . count($viewRecords) . " 条记录\n";
|
|
|
|
// 测试渲染功能(输出HTML长度作为测试)
|
|
$listHtml = ViewHelper::renderList(['limit' => 2], ['theme' => 'default']);
|
|
echo "🎨 默认列表HTML长度: " . strlen($listHtml) . " 字符\n";
|
|
|
|
$cardHtml = ViewHelper::renderList(['limit' => 2], ['theme' => 'card']);
|
|
echo "🎨 卡片列表HTML长度: " . strlen($cardHtml) . " 字符\n";
|
|
|
|
$timelineHtml = ViewHelper::renderTimeline(['limit' => 2]);
|
|
echo "🎨 时间线HTML长度: " . strlen($timelineHtml) . " 字符\n";
|
|
|
|
if (!empty($viewRecords)) {
|
|
$itemHtml = ViewHelper::renderItem($viewRecords[0]);
|
|
echo "🎨 单项HTML长度: " . strlen($itemHtml) . " 字符\n";
|
|
}
|
|
|
|
} catch (Exception $e) {
|
|
echo "❌ 视图辅助异常: " . $e->getMessage() . "\n";
|
|
}
|
|
echo "\n";
|
|
|
|
// 测试7: 配置测试
|
|
echo "测试7: 配置测试\n";
|
|
echo "---------------\n";
|
|
|
|
try {
|
|
$config = RecorderService::getConfig();
|
|
echo "⚙️ 插件配置信息:\n";
|
|
echo " - 启用状态: " . ($config['enabled'] ? '已启用' : '已禁用') . "\n";
|
|
echo " - 自动记录: " . ($config['auto_record']['enabled'] ? '已启用' : '已禁用') . "\n";
|
|
echo " - 记录保留天数: " . $config['retention_days'] . " 天\n";
|
|
echo " - 默认显示主题: " . $config['view']['theme'] . "\n";
|
|
|
|
} catch (Exception $e) {
|
|
echo "❌ 配置测试异常: " . $e->getMessage() . "\n";
|
|
}
|
|
echo "\n";
|
|
|
|
// 测试8: 数据验证
|
|
echo "测试8: 数据验证\n";
|
|
echo "---------------\n";
|
|
|
|
// 测试必填字段验证
|
|
try {
|
|
$result = RecorderService::record([
|
|
// 缺少必填字段 operation_type
|
|
'operation_desc' => '测试数据验证'
|
|
]);
|
|
echo "❌ 数据验证失败 - 应该抛出异常但没有\n";
|
|
} catch (Exception $e) {
|
|
echo "✅ 数据验证正常 - 正确检测到必填字段缺失\n";
|
|
}
|
|
|
|
// 测试空操作描述
|
|
try {
|
|
$result = RecorderService::record([
|
|
'operation_type' => '验证测试',
|
|
// 缺少必填字段 operation_desc
|
|
]);
|
|
echo "❌ 数据验证失败 - 应该抛出异常但没有\n";
|
|
} catch (Exception $e) {
|
|
echo "✅ 数据验证正常 - 正确检测到操作描述缺失\n";
|
|
}
|
|
echo "\n";
|
|
|
|
echo "=== 测试完成 ===\n";
|
|
echo "✅ 所有测试已执行完毕\n";
|
|
echo "📝 请查看上述输出结果,确认各项功能是否正常\n";
|
|
echo "💡 如有异常,请检查数据库连接和表结构是否正确\n\n";
|
|
|
|
// 输出一些调试信息
|
|
echo "调试信息:\n";
|
|
echo "- 当前时间: " . date('Y-m-d H:i:s') . "\n";
|
|
echo "- PHP版本: " . PHP_VERSION . "\n";
|
|
echo "- 内存使用: " . round(memory_get_usage() / 1024 / 1024, 2) . " MB\n";
|
|
echo "\n";
|
|
|
|
echo "🎉 插件测试脚本执行完成!\n";
|
|
echo "📖 更多使用方法请参考 README.md 文件\n";
|
|
?>
|