mirror of
https://github.com/misenhower/splatoon3.ink.git
synced 2026-04-23 01:57:58 -05:00
50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
import { describe, it, expect, vi } from 'vitest';
|
|
import { mkdirp, exists, olderThan } from './fs.mjs';
|
|
|
|
vi.mock('fs/promises', () => ({
|
|
default: {
|
|
mkdir: vi.fn(),
|
|
access: vi.fn(),
|
|
stat: vi.fn(),
|
|
},
|
|
}));
|
|
|
|
const fs = (await import('fs/promises')).default;
|
|
|
|
describe('mkdirp', () => {
|
|
it('calls fs.mkdir with recursive: true', async () => {
|
|
fs.mkdir.mockResolvedValue(undefined);
|
|
await mkdirp('/some/path');
|
|
expect(fs.mkdir).toHaveBeenCalledWith('/some/path', { recursive: true });
|
|
});
|
|
});
|
|
|
|
describe('exists', () => {
|
|
it('returns true when fs.access succeeds', async () => {
|
|
fs.access.mockResolvedValue(undefined);
|
|
expect(await exists('/some/file')).toBe(true);
|
|
});
|
|
|
|
it('returns false when fs.access throws', async () => {
|
|
fs.access.mockRejectedValue(new Error('ENOENT'));
|
|
expect(await exists('/missing/file')).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('olderThan', () => {
|
|
it('returns true when mtime is before cutoff', async () => {
|
|
fs.stat.mockResolvedValue({ mtime: new Date('2024-01-01') });
|
|
expect(await olderThan('/file', new Date('2024-06-01'))).toBe(true);
|
|
});
|
|
|
|
it('returns false when mtime is after cutoff', async () => {
|
|
fs.stat.mockResolvedValue({ mtime: new Date('2024-06-01') });
|
|
expect(await olderThan('/file', new Date('2024-01-01'))).toBe(false);
|
|
});
|
|
|
|
it('returns true when file is missing', async () => {
|
|
fs.stat.mockRejectedValue(new Error('ENOENT'));
|
|
expect(await olderThan('/missing', new Date())).toBe(true);
|
|
});
|
|
});
|