import { describe, it, expect, beforeEach } from 'vitest' import { NIS2Mapper } from '../../../src/compliance/NIS2Mapper.js' describe('NIS2Mapper', () => { let mapper: NIS2Mapper beforeEach(() => { mapper = new NIS2Mapper() }) describe('getMeasure()', () => { it('should return the incident handling measure', () => { const measure = mapper.getMeasure('NIS2.Art21.2.b') expect(measure).toBeDefined() expect(measure!.implemented).toBe(true) expect(measure!.shieldxEvidence).toContain('HealingOrchestrator') }) it('should return a gap for MFA/secured communications', () => { const measure = mapper.getMeasure('NIS2.Art21.2.j') expect(measure).toBeDefined() expect(measure!.implemented).toBe(false) expect(measure!.gapNote).toBeTruthy() }) it('should return undefined for unknown measure', () => { expect(mapper.getMeasure('NIS2.Art21.2.z')).toBeUndefined() }) }) describe('getCoverage()', () => { it('should report 10 total measures', () => { const coverage = mapper.getCoverage() expect(coverage.total).toBe(10) expect(coverage.covered).toBeGreaterThan(0) expect(coverage.covered).toBeLessThan(coverage.total) }) it('should list uncovered measure IDs as gaps', () => { const coverage = mapper.getCoverage() expect(coverage.gaps).toContain('NIS2.Art21.2.j') }) }) describe('getAllMappings()', () => { it('should return all 10 measures', () => { expect(mapper.getAllMappings().length).toBe(10) }) }) })