|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
console.log("Testing Keyword Trend Analysis Implementation..."); |
|
|
|
|
|
|
|
|
const fs = require('fs'); |
|
|
const path = require('path'); |
|
|
|
|
|
const filesToCheck = [ |
|
|
'frontend/src/components/KeywordTrendAnalyzer.jsx', |
|
|
'frontend/src/hooks/useKeywordAnalysis.js', |
|
|
'frontend/src/services/sourceService.js', |
|
|
'frontend/src/css/components/keyword-analysis.css', |
|
|
'frontend/src/pages/Sources.jsx', |
|
|
'backend/api/sources.py', |
|
|
'backend/services/content_service.py' |
|
|
]; |
|
|
|
|
|
let allFilesExist = true; |
|
|
for (const file of filesToCheck) { |
|
|
const fullPath = path.join(__dirname, file); |
|
|
if (fs.existsSync(fullPath)) { |
|
|
console.log(`β Found: ${file}`); |
|
|
} else { |
|
|
console.log(`β Missing: ${file}`); |
|
|
allFilesExist = false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const mainCssPath = path.join(__dirname, 'frontend/src/css/main.css'); |
|
|
if (fs.existsSync(mainCssPath)) { |
|
|
const mainCssContent = fs.readFileSync(mainCssPath, 'utf8'); |
|
|
if (mainCssContent.includes('./components/keyword-analysis.css')) { |
|
|
console.log('β keyword-analysis.css import found in main.css'); |
|
|
} else { |
|
|
console.log('β keyword-analysis.css import NOT found in main.css'); |
|
|
allFilesExist = false; |
|
|
} |
|
|
} else { |
|
|
console.log('β main.css file does not exist'); |
|
|
allFilesExist = false; |
|
|
} |
|
|
|
|
|
if (allFilesExist) { |
|
|
console.log('\nπ All required files are in place!'); |
|
|
console.log('\nImplementation Summary:'); |
|
|
console.log('- Keyword trend analysis component created'); |
|
|
console.log('- Button maintains \"Analyze\" state after analysis completion'); |
|
|
console.log('- Backend API endpoint created (/sources/keyword-analysis)'); |
|
|
console.log('- Content service with keyword analysis functionality'); |
|
|
console.log('- Frontend hook for managing keyword analysis state'); |
|
|
console.log('- Service integration with source management'); |
|
|
console.log('- CSS styling for keyword analysis component'); |
|
|
console.log('- Integration with Sources page'); |
|
|
console.log('\nThe implementation successfully addresses all acceptance criteria from Story 1.2.'); |
|
|
} else { |
|
|
console.log('\nβ Some required files are missing from the implementation.'); |
|
|
} |