Centralized test data generation and management using factories and seeders.
Located in apps/backend/tests/factories/:
import { UserFactory, CourseFactory, EnrollmentFactory } from '@/tests/factories';
// Single entity
const user = UserFactory.create({ role: 'admin' });
// Multiple entities
const users = UserFactory.createMany(5);
// With overrides
const course = CourseFactory.create({ title: 'Advanced Rust' });Use TestDataSeeder for test setup:
const seeder = new TestDataSeeder(dataSource);
const users = await seeder.seedUsers(10);
const courses = await seeder.seedCourses(5);
await seeder.seedEnrollments(userIds, courseIds);Always cleanup after tests:
afterEach(async () => {
await seeder.cleanup();
});Test data factories are versioned with the codebase. Update factories when schema changes.
- Use factories for all test data
- Keep factories simple and focused
- Override only necessary fields
- Cleanup after each test
- Commit factory changes with schema migrations