60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
import fs from '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',
|
|
);
|
|
});
|
|
});
|
|
});
|