Files
sd-park-pass-ntfy/validate-real-response.js
2025-07-14 00:47:17 -07:00

64 lines
2.4 KiB
JavaScript

#!/usr/bin/env node
// Test script to validate parsing against real API response
import fs from 'fs';
import { countAvailableItems, CONFIG } from './index.js';
console.log('🧪 Testing against real API response example...\n');
try {
// Read the example response
const exampleData = JSON.parse(fs.readFileSync('./example-response.json', 'utf8'));
console.log('📄 Loaded example-response.json');
console.log(`📊 Total bibItems in response: ${Object.keys(exampleData.entities.bibItems).length}`);
// Count available items
const availableCount = countAvailableItems(exampleData);
console.log(`\n🎯 Results:`);
console.log(` Available items at ${CONFIG.BRANCH_NAME}: ${availableCount}`);
// Show some details about passes at the configured branch
console.log(`\n📋 ${CONFIG.BRANCH_NAME} items in response:`);
let totalBranchItems = 0;
let availableBranchItems = 0;
let checkedOutBranchItems = 0;
const bibItems = exampleData.entities.bibItems;
for (const itemId in bibItems) {
const item = bibItems[itemId];
if (item.branchName?.includes(CONFIG.BRANCH_NAME)) {
totalBranchItems++;
if (item.availability?.statusType !== 'UNAVAILABLE') {
availableBranchItems++;
console.log(`${itemId}: ${item.availability.statusType} (${item.availability.libraryStatus})`);
} else {
checkedOutBranchItems++;
if (checkedOutBranchItems <= 3) { // Only show first 3 to avoid spam
console.log(`${itemId}: CHECKED OUT (due: ${item.dueDate || 'N/A'})`);
}
}
}
}
if (checkedOutBranchItems > 3) {
console.log(` ... and ${checkedOutBranchItems - 3} more checked out items`);
}
console.log(`\n📈 Summary:`);
console.log(` Total items at ${CONFIG.BRANCH_NAME}: ${totalBranchItems}`);
console.log(` Available: ${availableBranchItems}`);
console.log(` Checked out: ${checkedOutBranchItems}`);
if (availableCount !== availableBranchItems) {
console.log(`\n⚠️ Warning: Count mismatch! Function returned ${availableCount} but manual count is ${availableBranchItems}`);
} else {
console.log(`\n✅ Count validation passed!`);
}
} catch (error) {
console.error('❌ Error:', error.message);
process.exit(1);
}