78 lines
1.6 KiB
Markdown
78 lines
1.6 KiB
Markdown
# Test Documentation
|
|
|
|
This directory contains unit tests for the Dyad application.
|
|
|
|
## Testing Setup
|
|
|
|
We use [Vitest](https://vitest.dev/) as our testing framework, which is designed to work well with Vite and modern JavaScript.
|
|
|
|
### Test Commands
|
|
|
|
Add these commands to your `package.json`:
|
|
|
|
```json
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:ui": "vitest --ui"
|
|
```
|
|
|
|
- `npm run test` - Run tests once
|
|
- `npm run test:watch` - Run tests in watch mode (rerun when files change)
|
|
- `npm run test:ui` - Run tests with UI reporter
|
|
|
|
## Mocking Guidelines
|
|
|
|
### Mocking fs module
|
|
|
|
When mocking the `node:fs` module, use a default export in the mock:
|
|
|
|
```typescript
|
|
vi.mock("node:fs", async () => {
|
|
return {
|
|
default: {
|
|
mkdirSync: vi.fn(),
|
|
writeFileSync: vi.fn(),
|
|
// Add other fs methods as needed
|
|
},
|
|
};
|
|
});
|
|
```
|
|
|
|
### Mocking isomorphic-git
|
|
|
|
When mocking isomorphic-git, provide a default export:
|
|
|
|
```typescript
|
|
vi.mock("isomorphic-git", () => ({
|
|
default: {
|
|
add: vi.fn().mockResolvedValue(undefined),
|
|
commit: vi.fn().mockResolvedValue(undefined),
|
|
// Add other git methods as needed
|
|
},
|
|
}));
|
|
```
|
|
|
|
### Testing IPC Handlers
|
|
|
|
When testing IPC handlers, mock the Electron IPC system:
|
|
|
|
```typescript
|
|
vi.mock("electron", () => ({
|
|
ipcMain: {
|
|
handle: vi.fn(),
|
|
on: vi.fn(),
|
|
},
|
|
}));
|
|
```
|
|
|
|
## Adding New Tests
|
|
|
|
1. Create a new file with the `.test.ts` or `.spec.ts` extension
|
|
2. Import the functions you want to test
|
|
3. Mock any dependencies using `vi.mock()`
|
|
4. Write your test cases using `describe()` and `it()`
|
|
|
|
## Example
|
|
|
|
See `chat_stream_handlers.test.ts` for an example of testing IPC handlers with proper mocking.
|