UNPKG

vibe-janitor

Version:

A CLI tool that cleans AI-generated JavaScript/TypeScript projects efficiently and intelligently

62 lines (59 loc) 2.44 kB
import fs from 'fs-extra'; import path from 'path'; import os from 'os'; import { CircularDependencyScanner } from '../core/circularDependencyScanner.js'; describe('CircularDependencyScanner Module', () => { let testDir; beforeEach(async () => { // Create a temporary directory for test files testDir = path.join(os.tmpdir(), `vibe-janitor-test-${Date.now()}`); await fs.ensureDir(testDir); await fs.ensureDir(path.join(testDir, 'src')); }); afterEach(async () => { // Clean up the temporary directory await fs.remove(testDir); }); test('should detect circular dependencies', async () => { // Create files with circular dependencies const fileAContent = ` // File A imports from File B import { functionB } from './file-b'; export function functionA() { return "A calls " + functionB(); } `; const fileBContent = ` // File B imports from File A (creating a circular dependency) import { functionA } from './file-a'; export function functionB() { return "B calls " + functionA(); } `; // Write files to the test directory await fs.writeFile(path.join(testDir, 'src/file-a.js'), fileAContent); await fs.writeFile(path.join(testDir, 'src/file-b.js'), fileBContent); // Run the circular dependency scanner const scanner = new CircularDependencyScanner(testDir); const result = await scanner.scan(); // In a real environment with actual madge execution, // we would expect these assertions to pass expect(result).toBeDefined(); // Generate report const report = scanner.generateReport(result); // Verify that report was generated expect(report).toBeDefined(); // Mock a result with circular dependencies for testing report generation const mockResult = { circularDependencies: [['src/file-a.js', 'src/file-b.js']], dependencyCount: 2, fileCount: 2, warnings: [], }; const mockReport = scanner.generateReport(mockResult); // Check that the mock report contains expected content expect(mockReport).toContain('Circular Dependency Report'); expect(mockReport).toContain('src/file-a.js'); expect(mockReport).toContain('src/file-b.js'); }); });