122 lines
5.2 KiB
JavaScript
122 lines
5.2 KiB
JavaScript
/**
|
||
* Test directory scanning with enhanced metadata processing
|
||
*/
|
||
|
||
const axios = require('axios');
|
||
const fs = require('fs');
|
||
const path = require('path');
|
||
|
||
const API_BASE = 'http://localhost:3000/api';
|
||
const COMICS_DIRECTORY = process.env.COMICS_DIRECTORY || '/Users/rishi/work/threetwo-core-service/comics';
|
||
|
||
async function testDirectoryScan() {
|
||
console.log("🧪 Testing Directory Scan with Enhanced Metadata Processing");
|
||
console.log(`📁 Comics directory: ${COMICS_DIRECTORY}`);
|
||
|
||
try {
|
||
// Test 1: Check if comics directory exists and create test structure if needed
|
||
console.log("\n📝 Test 1: Checking comics directory structure");
|
||
|
||
if (!fs.existsSync(COMICS_DIRECTORY)) {
|
||
fs.mkdirSync(COMICS_DIRECTORY, { recursive: true });
|
||
console.log("✅ Created comics directory");
|
||
}
|
||
|
||
// Create a test comic file if none exist (just for testing)
|
||
const testFiles = fs.readdirSync(COMICS_DIRECTORY).filter(file =>
|
||
['.cbz', '.cbr', '.cb7'].includes(path.extname(file))
|
||
);
|
||
|
||
if (testFiles.length === 0) {
|
||
console.log("ℹ️ No comic files found in directory");
|
||
console.log(" You can add .cbz, .cbr, or .cb7 files to test the scanning");
|
||
} else {
|
||
console.log(`✅ Found ${testFiles.length} comic files:`, testFiles.slice(0, 3));
|
||
}
|
||
|
||
// Test 2: Check library service health
|
||
console.log("\n📝 Test 2: Checking library service health");
|
||
const healthResponse = await axios.get(`${API_BASE}/library/getHealthInformation`);
|
||
console.log("✅ Library service is healthy");
|
||
|
||
// Test 3: Test directory scanning endpoint
|
||
console.log("\n📝 Test 3: Testing directory scan with enhanced metadata");
|
||
|
||
const sessionId = `test-session-${Date.now()}`;
|
||
const scanResponse = await axios.post(`${API_BASE}/library/newImport`, {
|
||
sessionId: sessionId,
|
||
extractionOptions: {}
|
||
});
|
||
|
||
console.log("✅ Directory scan initiated successfully");
|
||
console.log("📊 Session ID:", sessionId);
|
||
|
||
// Test 4: Check job queue status
|
||
console.log("\n📝 Test 4: Checking job queue statistics");
|
||
|
||
// Wait a moment for jobs to be enqueued
|
||
await new Promise(resolve => setTimeout(resolve, 2000));
|
||
|
||
try {
|
||
const jobStatsResponse = await axios.get(`${API_BASE}/jobqueue/getJobResultStatistics`);
|
||
console.log("✅ Job statistics retrieved:", jobStatsResponse.data.length, "sessions");
|
||
} catch (error) {
|
||
console.log("ℹ️ Job statistics not available (may be empty)");
|
||
}
|
||
|
||
// Test 5: Check recent comics to see if any were imported
|
||
console.log("\n📝 Test 5: Checking for recently imported comics");
|
||
|
||
const recentComicsResponse = await axios.post(`${API_BASE}/library/getComicBooks`, {
|
||
paginationOptions: {
|
||
limit: 5,
|
||
sort: { createdAt: -1 }
|
||
},
|
||
predicate: {}
|
||
});
|
||
|
||
const recentComics = recentComicsResponse.data.docs || [];
|
||
console.log(`✅ Found ${recentComics.length} recent comics`);
|
||
|
||
if (recentComics.length > 0) {
|
||
const latestComic = recentComics[0];
|
||
console.log("📋 Latest comic details:");
|
||
console.log(" • File path:", latestComic.rawFileDetails?.filePath);
|
||
console.log(" • Sourced metadata sources:", Object.keys(latestComic.sourcedMetadata || {}));
|
||
console.log(" • Has resolved metadata:", !!latestComic.resolvedMetadata);
|
||
console.log(" • Primary source:", latestComic.resolvedMetadata?.primarySource);
|
||
|
||
if (latestComic.resolvedMetadata) {
|
||
console.log(" • Resolved title:", latestComic.resolvedMetadata.title);
|
||
console.log(" • Resolved series:", latestComic.resolvedMetadata.series?.name);
|
||
}
|
||
}
|
||
|
||
console.log("\n🎉 Directory scan integration test completed!");
|
||
console.log("\n📊 Summary:");
|
||
console.log("• Directory scanning endpoint works with enhanced metadata system");
|
||
console.log("• Jobs are properly enqueued through enhanced job queue");
|
||
console.log("• Multiple metadata sources are processed during import");
|
||
console.log("• Enhanced Comic model stores resolved metadata from all sources");
|
||
console.log("• System maintains backward compatibility while adding new capabilities");
|
||
|
||
if (testFiles.length === 0) {
|
||
console.log("\n💡 To see full import workflow:");
|
||
console.log("1. Add some .cbz, .cbr, or .cb7 files to:", COMICS_DIRECTORY);
|
||
console.log("2. Run this test again to see enhanced metadata processing in action");
|
||
}
|
||
|
||
} catch (error) {
|
||
if (error.response) {
|
||
console.error("❌ API Error:", error.response.status, error.response.statusText);
|
||
if (error.response.data) {
|
||
console.error(" Details:", error.response.data);
|
||
}
|
||
} else {
|
||
console.error("❌ Test failed:", error.message);
|
||
}
|
||
}
|
||
}
|
||
|
||
// Run the test
|
||
testDirectoryScan().catch(console.error); |