| |
| |
| |
| |
| |
|
|
| import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; |
| import fs from 'node:fs/promises'; |
| import { StandardFileSystemService } from './fileSystemService.js'; |
|
|
| vi.mock('fs/promises'); |
|
|
| describe('StandardFileSystemService', () => { |
| let fileSystem: StandardFileSystemService; |
|
|
| beforeEach(() => { |
| vi.resetAllMocks(); |
| fileSystem = new StandardFileSystemService(); |
| }); |
|
|
| afterEach(() => { |
| vi.restoreAllMocks(); |
| }); |
|
|
| describe('readTextFile', () => { |
| it('should read file content using fs', async () => { |
| const testContent = 'Hello, World!'; |
| vi.mocked(fs.readFile).mockResolvedValue(testContent); |
|
|
| const result = await fileSystem.readTextFile('/test/file.txt'); |
|
|
| expect(fs.readFile).toHaveBeenCalledWith('/test/file.txt', 'utf-8'); |
| expect(result).toBe(testContent); |
| }); |
|
|
| it('should propagate fs.readFile errors', async () => { |
| const error = new Error('ENOENT: File not found'); |
| vi.mocked(fs.readFile).mockRejectedValue(error); |
|
|
| await expect(fileSystem.readTextFile('/test/file.txt')).rejects.toThrow( |
| 'ENOENT: File not found', |
| ); |
| }); |
| }); |
|
|
| describe('writeTextFile', () => { |
| it('should write file content using fs', async () => { |
| vi.mocked(fs.writeFile).mockResolvedValue(); |
|
|
| await fileSystem.writeTextFile('/test/file.txt', 'Hello, World!'); |
|
|
| expect(fs.writeFile).toHaveBeenCalledWith( |
| '/test/file.txt', |
| 'Hello, World!', |
| 'utf-8', |
| ); |
| }); |
| }); |
| }); |
|
|