UNPKG

rerumaccusamus

Version:

The meta-framework suite designed from scratch for frontend-focused modern web development.

64 lines (54 loc) 1.69 kB
import * as path from 'path'; import { fs, wait } from '@modern-js/utils'; import { initWatcher } from '../src/initWatcher'; jest.useRealTimers(); const mockAppDirectory = path.join(__dirname, './fixtures/index-test'); const mockConfigDir = './config'; const mockSrcDirectory = path.join(mockAppDirectory, './src'); describe('initWatcher', () => { afterAll(() => { const file = path.join(mockSrcDirectory, './index.ts'); if (fs.existsSync(file)) { fs.unlinkSync(file); } }); test('will trigger add event', async () => { let triggeredType = ''; let triggeredFile = ''; const loaded = { filePath: '', dependencies: [], }; const hooksRunner = { watchFiles: async () => [mockSrcDirectory], fileChange: jest.fn(({ filename, eventType }) => { triggeredType = eventType; triggeredFile = filename; }), }; if (await fs.pathExists(mockSrcDirectory)) { await fs.remove(mockSrcDirectory); } const watcher = await initWatcher( loaded as any, mockAppDirectory, mockConfigDir, hooksRunner as any, ['dev'], ); await wait(100); const file = path.join(mockSrcDirectory, './index.ts'); await fs.outputFile(file, ''); await wait(100); // expect(hooksRunner.fileChange).toBeCalledTimes(1); // expect(triggeredType).toBe('add'); expect(file.includes(triggeredFile)).toBeTruthy(); await wait(100); await fs.remove(file); await wait(200); expect(hooksRunner.fileChange).toBeCalledTimes(2); expect(triggeredType).toBe('unlink'); expect(file.includes(triggeredFile)).toBeTruthy(); watcher?.close(); }); });