77 lines
2.4 KiB
JavaScript
77 lines
2.4 KiB
JavaScript
#!/usr/bin/env node
|
||
|
||
/**
|
||
* 測試後台管理匯出功能
|
||
*/
|
||
|
||
async function testAdminExport() {
|
||
try {
|
||
console.log('🔍 測試後台管理匯出功能...')
|
||
console.log('')
|
||
|
||
// 1. 測試獲取數據
|
||
console.log('1️⃣ 測試獲取困擾案例數據...')
|
||
const wishesResponse = await fetch('http://localhost:3000/api/admin/wishes')
|
||
const wishesResult = await wishesResponse.json()
|
||
|
||
if (wishesResult.success) {
|
||
console.log(`✅ 成功獲取 ${wishesResult.data.length} 筆困擾案例數據`)
|
||
} else {
|
||
console.log(`❌ 獲取失敗: ${wishesResult.error}`)
|
||
return
|
||
}
|
||
console.log('')
|
||
|
||
// 2. 測試獲取統計數據
|
||
console.log('2️⃣ 測試獲取統計數據...')
|
||
const statsResponse = await fetch('http://localhost:3000/api/admin/stats')
|
||
const statsResult = await statsResponse.json()
|
||
|
||
if (statsResult.success) {
|
||
console.log(`✅ 成功獲取統計數據:`)
|
||
console.log(` 總案例數: ${statsResult.data.totalWishes}`)
|
||
console.log(` 公開案例: ${statsResult.data.publicWishes}`)
|
||
console.log(` 私密案例: ${statsResult.data.privateWishes}`)
|
||
console.log(` 總點讚數: ${statsResult.data.totalLikes}`)
|
||
console.log(` 本週新增: ${statsResult.data.recentWishes}`)
|
||
} else {
|
||
console.log(`❌ 獲取統計失敗: ${statsResult.error}`)
|
||
}
|
||
console.log('')
|
||
|
||
// 3. 測試 CSV 匯出
|
||
console.log('3️⃣ 測試 CSV 匯出...')
|
||
const exportResponse = await fetch('http://localhost:3000/api/admin/export-csv', {
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
},
|
||
body: JSON.stringify({
|
||
data: wishesResult.data.slice(0, 5), // 只匯出前5筆測試
|
||
filename: 'test_export.csv'
|
||
})
|
||
})
|
||
|
||
if (exportResponse.ok) {
|
||
const csvContent = await exportResponse.text()
|
||
console.log(`✅ CSV 匯出成功,內容長度: ${csvContent.length} 字元`)
|
||
console.log(` 前100字元: ${csvContent.substring(0, 100)}...`)
|
||
} else {
|
||
console.log(`❌ CSV 匯出失敗: ${exportResponse.status}`)
|
||
}
|
||
console.log('')
|
||
|
||
console.log('🎉 後台管理功能測試完成!')
|
||
|
||
} catch (error) {
|
||
console.error('❌ 測試失敗:', error.message)
|
||
}
|
||
}
|
||
|
||
// 執行測試
|
||
if (require.main === module) {
|
||
testAdminExport()
|
||
}
|
||
|
||
module.exports = { testAdminExport }
|