Write focused, practical tests for the current file following the 80/20 principle.
Instructions
When writing tests for a file:
Identify the core functionality
Focus on the most important paths and edge cases that provide 80% of the value
Keep it simple
Write straightforward tests that are easy to understand and maintain
Minimal mocking
:
DO NOT mock the database
Only mock external services (APIs, third-party services)
Prefer real implementations when possible
Use factories
Leverage test factories to set up data efficiently
Focus on behavior
Test what the code does, not how it does it
For Front (TypeScript/Next.js)
Setup
Import factories from
front/tests/utils/factories
Import utilities from
front/tests/utils/utils
Use the test database (no mocking)
Structure
import
{
describe
,
it
,
expect
}
from
"vitest"
;
import
{
makeTestWorkspace
,
makeTestUser
}
from
"tests/utils/factories"
;
describe
(
"ComponentName or FunctionName"
,
(
)
=>
{
it
(
"should handle the main happy path"
,
async
(
)
=>
{
// Arrange: Set up using factories
const
{
workspace
}
=
createResourceTest
(
)
// Act: Execute the code
const
result
=
await
functionUnderTest
(
workspace
)
;
// Assert: Verify behavior
expect
(
result
)
.
toBeDefined
(
)
;
}
)
;
it
(
"should handle the most common edge case"
,
async
(
)
=>
{
// Test the second most important scenario
}
)
;
}
)
;
What to test (80/20 focus)
Main success paths
Most common error conditions
Critical edge cases (null/undefined, empty arrays, etc.)
Permission checks (if applicable)
What to skip (diminishing returns)
Exhaustive parameter combinations
Unlikely edge cases
Internal implementation details
UI component rendering (unless critical)
For Connectors/Core
Follow similar principles:
Use factories appropriate to the service
Focus on integration points
Mock external APIs only (Slack, Notion, GitHub, etc.)
Test the database interactions directly
Example Pattern
describe
(
"createConversation"
,
(
)
=>
{
it
(
"creates conversation with valid params"
,
async
(
)
=>
{
const
{
workspace
,
user
}
=
createResourceTest
(
)
const
conversation
=
await
createConversation
(
{
workspace
,
userId
:
user
.
id
,
title
:
"Test"
}
)
;
expect
(
conversation
.
sId
)
.
toBeDefined
(
)
;
expect
(
conversation
.
title
)
.
toBe
(
"Test"
)
;
}
)
;
it
(
"fails without required permissions"
,
async
(
)
=>
{
const
{
workspace
,
user
}
=
createResourceTest
(
)
await
expect
(
createConversation
(
{
workspace
,
userId
:
user
.
id
}
)
)
.
rejects
.
toThrow
(
"Permission denied"
)
;
}
)
;
}
)
;
Execution Steps
Read the file to understand its purpose and main exports
Check if a test file already exists (e.g.,
file.test.ts
)
Identify the 2-4 most important functions/behaviors to test
Find or create appropriate factories for test data
Write concise, focused tests
Run tests with
npm test
to verify they pass