# Simple Import/Export Test $ErrorActionPreference = "Stop" $env:JAVA_HOME = "C:\Program Files\Java\latest\jdk-25" $APP_JAR = "target\datacollect-cli-0.1.0-jar-with-dependencies.jar" $TEST_FILE = "data\sample_test.json" $EXPORT_FILE = "data\export_result.json" Write-Host "========================================" -ForegroundColor Cyan Write-Host "Import/Export Feature Test" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "" # Step 1: Import sample data Write-Host "[TEST 1] Import sample JSON file" -ForegroundColor Yellow Write-Host "Command: import $TEST_FILE" -ForegroundColor Gray $result = & java -jar $APP_JAR "import $TEST_FILE" 2>&1 Write-Host $result -ForegroundColor Green Write-Host "" # Step 2: List articles Write-Host "[TEST 2] List articles after import" -ForegroundColor Yellow Write-Host "Command: list" -ForegroundColor Gray $result = & java -jar $APP_JAR "list" 2>&1 Write-Host $result -ForegroundColor Green # Extract count $count1 = 0 $result -split "`n" | ForEach-Object { if ($_ -match "Total: (\d+)") { $count1 = [int]$matches[1] } } Write-Host "Article count: $count1" -ForegroundColor Cyan Write-Host "" # Step 3: Export to new file Write-Host "[TEST 3] Export to new JSON file" -ForegroundColor Yellow Write-Host "Command: export $EXPORT_FILE --format json" -ForegroundColor Gray $result = & java -jar $APP_JAR "export $EXPORT_FILE --format json" 2>&1 Write-Host $result -ForegroundColor Green Write-Host "" # Step 4: Check exported file Write-Host "[TEST 4] Verify exported JSON file" -ForegroundColor Yellow if (Test-Path $EXPORT_FILE) { Write-Host "[SUCCESS] Export file created" -ForegroundColor Green $content = Get-Content $EXPORT_FILE -Raw Write-Host "File size: $($content.Length) characters" -ForegroundColor Cyan # Check for crawledAt if ($content -match "crawledAt") { Write-Host "[SUCCESS] crawledAt field found in exported JSON" -ForegroundColor Green } else { Write-Host "[ERROR] crawledAt field NOT found" -ForegroundColor Red } # Check for metadata if ($content -match "metadata") { Write-Host "[SUCCESS] metadata field found" -ForegroundColor Green } else { Write-Host "[ERROR] metadata field NOT found" -ForegroundColor Red } } else { Write-Host "[ERROR] Export file NOT created" -ForegroundColor Red } Write-Host "" # Step 5: Test duplicate import Write-Host "[TEST 5] Test duplicate import (should skip duplicates)" -ForegroundColor Yellow Write-Host "Command: import $TEST_FILE (again)" -ForegroundColor Gray $result = & java -jar $APP_JAR "import $TEST_FILE" 2>&1 Write-Host $result -ForegroundColor Green # Step 6: List and verify no duplication Write-Host "[TEST 6] Verify no duplication" -ForegroundColor Yellow Write-Host "Command: list" -ForegroundColor Gray $result = & java -jar $APP_JAR "list" 2>&1 Write-Host $result -ForegroundColor Green $count2 = 0 $result -split "`n" | ForEach-Object { if ($_ -match "Total: (\d+)") { $count2 = [int]$matches[1] } } Write-Host "Article count after second import: $count2" -ForegroundColor Cyan Write-Host "" # Summary Write-Host "========================================" -ForegroundColor Cyan Write-Host "TEST SUMMARY" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan if ($count1 -eq 3 -and $count2 -eq 3) { Write-Host "[SUCCESS] All tests passed!" -ForegroundColor Green Write-Host "- Import: Successfully imported 3 articles" -ForegroundColor White Write-Host "- Export: Successfully exported to JSON" -ForegroundColor White Write-Host "- Duplicate: Correctly skipped duplicate articles" -ForegroundColor White Write-Host "- crawledAt field: Present in exported JSON" -ForegroundColor White } else { Write-Host "[PARTIAL] Some tests may have issues" -ForegroundColor Yellow Write-Host "First import count: $count1" -ForegroundColor White Write-Host "Second import count: $count2" -ForegroundColor White } Write-Host "" # Show exported file content Write-Host "========================================" -ForegroundColor Cyan Write-Host "EXPORTED JSON CONTENT (Preview)" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan if (Test-Path $EXPORT_FILE) { $exportContent = Get-Content $EXPORT_FILE -Raw if ($exportContent.Length -gt 1000) { Write-Host ($exportContent.Substring(0, 1000) + "...") -ForegroundColor White } else { Write-Host $exportContent -ForegroundColor White } }