Qadam Roadmap
проектdocs/Agents/rules/testing-coverage-requirements.md

testing-coverage-requirements.md

Обновлён 1 апр. 2026 г., 12:41 · 0 комментариев


title: Maintain 80%+ Test Coverage for New Code impact: HIGH impactDescription: Prevents bugs and enables confident refactoring tags: testing, coverage, quality

Паспорт документа

  • Статус документа: living standard
  • Актуально на: 28 марта 2026 года
  • Владелец: backend/platform-команда
  • Пересмотр: при изменении инженерной практики, CI/CD, архитектурных правил или локального workflow
  • Область применения: внутренние rule/reference-card документы для инженерной команды
  • Связанные документы:

Maintain 80%+ Test Coverage for New Code

Impact: HIGH

Every PR must have near-80%+ test coverage for the code it introduces or modifies. If you add 50 lines of new code, those 50 lines must be covered by tests.

What to Test

LayerTest TypeToolCoverage Target
NestJS Services (business logic)UnitJest~100%
Repositories (data access)IntegrationJest80%+
Controllers (HTTP layer)IntegrationJest + Supertest80%+
Frontend componentsUnitVitest + Testing Library70%+
Shared packagesUnitVitest80%+
User flowsE2EPlaywrightCritical paths

Example

// item.service.spec.ts
describe('ItemService', () => {
  let service: ItemService;
  let repo: jest.Mocked<ItemRepository>;

  beforeEach(async () => {
    const module = await Test.createTestingModule({
      providers: [
        ItemService,
        { provide: ItemRepository, useValue: createMock<ItemRepository>() },
      ],
    }).compile();

    service = module.get(ItemService);
    repo = module.get(ItemRepository);
  });

  describe('findBySlug', () => {
    it('returns item when found', async () => {
      const mockItem = { id: '1', name: 'Test', slug: 'test' };
      repo.findBySlug.mockResolvedValue(mockItem);

      const result = await service.findBySlug('test');
      expect(result).toEqual(mockItem);
    });

    it('returns null when not found', async () => {
      repo.findBySlug.mockResolvedValue(null);

      const result = await service.findBySlug('nonexistent');
      expect(result).toBeNull();
    });
  });
});

Rules

  • Services must have unit tests with mocked dependencies
  • Use AI assistance to generate comprehensive test suites
  • Test edge cases: empty inputs, invalid data, boundary conditions
  • Test error paths: what happens when things go wrong