Kevin L'Hereec
|
76e75132d5
|
test: raise business-logic unit test coverage across core services
Build & Deploy / build (push) Successful in 34s
Build & Deploy / docker (push) Successful in 1m19s
Build & Deploy / deploy (push) Successful in 37s
Adds targeted unit tests to cover previously untested branches/functions
in the business-critical (non-protocol) services:
- device_service.ts: 35.8% -> 98.76% (CRUD, executeCommand, refreshDevice,
calculatePagination, IPv4/IPv6 Connection Request fallback chain)
- domain/device/device.ts: 76.7% -> 96.59% (GPN circuit breaker state
machine, session lifecycle, canExecuteCommands, detectDataModelFromParams)
- services/references/reference_engine.ts: 78.66% -> 100% (provider
loading edge cases, rejection handling, singleton lifecycle)
- services/configuration_engine.ts: 70.96% -> 98.7% (matchesCriteria
branches, shouldApplyOnce policy variants, dryRun, complianceReport)
- services/cwmp/state_machine_manager.ts: 70.9% -> 87.27% (getHashIdForRemoteIp,
ensureSessionForRemote IP fallback, task callback error handling)
- services/cwmp/main_state_machine.ts: 57.79% -> 94.29% (ExecutingCommandsState
full command-type dispatch, MAX_STATE_TRANSITIONS guard, error->
PartialOperationalState transitions)
Also fixes:
- reference_engine_full.spec.ts previously depended on the real
config/references.json (production config, wassup provider legitimately
disabled there) instead of a test fixture — now mocks config_loader
for deterministic, isolated assertions
- main_state_machine.spec.ts CommandModel.getCollection mock returned a
new object per call instead of a shared instance, breaking
setupCommandMock() for the new command-dispatch tests
Overall project coverage (excluding protocol/): 72.76% -> 82.34% statements.
Full suite: 1005/1005 tests passing.
|
2026-07-22 11:45:50 +02:00 |
|
 Kevin L'HereecandCopilot
|
aff8e14a63
|
feat: compliance report + auto-versioning for configurations
- Add ComplianceStatus.PENDING and configVersion to DeviceComplianceInfo
- Add ComplianceReport + ComplianceDeviceResult types to ConfigurationEngine
- Expose evaluateSpecific() as public (used by compliance + dry-run)
- Add complianceReport() method: filter matching devices, evaluate each
- Fix matchesCriteria: skip parameterCriteria entries with null/empty name
- Fix getDeviceParameterValue: fallback to plain object arrays (DeviceRecord)
- Fix findDevice: support lookup by both identifier and deviceId.id
- ConfigurationService.update: version is now auto-managed (no user input)
- behavioral changes (criteria/params/policy/priority/…) → patch bump
- bumpType field allows 'patch' | 'minor' | 'major'
- cosmetic changes (name/tags) → no bump
- Add sanitizeCriteria: filter null/empty parameterCriteria names silently
- Add isBehavioralChange helper
- Add DeviceModel.resetComplianceForConfiguration call on behavioral update
- Add ConfigurationModel.distinctTags() + controller endpoint GET /tags
- Add controller endpoint GET /configurations/:id/compliance
- Add DeviceModel.getDistinctValues for inventory fields
- Fix unit tests: mock DeviceModel, remove obsolete version-validation test
- Add 14 new unit tests (engine: 5, service: 9)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
2026-06-01 11:32:17 +02:00 |
|