Files
think-plugs-recorder/test_example.php
2025-08-13 10:39:09 +08:00

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";
?>