Files
adam-acs/tests/unit/utils/inventory_coverage.spec.ts
Kevin L'HereecandCopilot d1c65dbf1e chore: initial commit — AdonisJS v7 TR-069 ACS
- Docker infrastructure (Dockerfile, docker-compose.yml, genieacs-sim)
- AdonisJS v7 app with Inertia.js + Vue 3
- MongoDB integration
- CWMP/TR-069 state machine engine
- Configuration engine with compliance tracking
- Branding: ADAM ACS (favicon, navbar, locales)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-29 16:46:37 +02:00

90 lines
2.7 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import {
isParameterCoveredByInventory,
suggestInventoryPath,
} from '../../../app/utils/inventory_coverage.js'
describe('isParameterCoveredByInventory', () => {
it('returns true for subtree match (path ending with dot)', () => {
const inventoryPaths = [{ path: 'InternetGatewayDevice.ManagementServer.' }]
expect(
isParameterCoveredByInventory(
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
inventoryPaths
)
).toBe(true)
})
it('returns true for exact match (path without trailing dot)', () => {
const inventoryPaths = [
{ path: 'InternetGatewayDevice.ManagementServer.PeriodicInformInterval' },
]
expect(
isParameterCoveredByInventory(
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
inventoryPaths
)
).toBe(true)
})
it('returns false when parameter is not covered', () => {
const inventoryPaths = [{ path: 'InternetGatewayDevice.DeviceInfo.' }]
expect(
isParameterCoveredByInventory(
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
inventoryPaths
)
).toBe(false)
})
it('returns false for empty inventory', () => {
expect(
isParameterCoveredByInventory(
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
[]
)
).toBe(false)
})
it('handles multiple inventory paths', () => {
const inventoryPaths = [
{ path: 'InternetGatewayDevice.DeviceInfo.' },
{ path: 'InternetGatewayDevice.ManagementServer.' },
]
expect(
isParameterCoveredByInventory(
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
inventoryPaths
)
).toBe(true)
})
it('does not match partial path names without trailing dot', () => {
const inventoryPaths = [{ path: 'InternetGatewayDevice.Man' }]
expect(
isParameterCoveredByInventory(
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
inventoryPaths
)
).toBe(false)
})
})
describe('suggestInventoryPath', () => {
it('removes the leaf name and adds trailing dot', () => {
expect(
suggestInventoryPath('InternetGatewayDevice.ManagementServer.PeriodicInformInterval')
).toBe('InternetGatewayDevice.ManagementServer.')
})
it('handles deeply nested paths', () => {
expect(
suggestInventoryPath('InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.Name')
).toBe('InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.')
})
it('handles single-level path', () => {
expect(suggestInventoryPath('ParameterName')).toBe('.')
})
})