feat: architecture refactor — validators, positions, menuUtils, ESLint, tests, CI

Major improvements across the codebase:

- Extract validationUtils.js (548→217 lines) into strategy pattern validators
- Extract menuUtils.js (543→35 lines) into 6 focused menu modules
- Adopt POSITIONS constants across 23 files (183 replacements)
- Eliminate all 71 ESLint warnings (0 errors, 0 warnings)
- Add 158 unit tests for ConfigManager, MeasurementContainer, ValidationUtils
- Add architecture documentation with Mermaid diagrams
- Add CI pipeline (Docker, ESLint, Jest, Makefile)
- Add E2E infrastructure (docker-compose.e2e.yml)

Test results: 377 total (230 Jest + 23 node:test + 124 legacy), all passing
Lint: 0 errors, 0 warnings

Closes #2, #3, #9, #13, #14, #18

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Rene De Ren
2026-03-11 15:37:20 +01:00
parent 80de324b32
commit 905a061590
28 changed files with 5236 additions and 26 deletions

50
Makefile Normal file
View File

@@ -0,0 +1,50 @@
.PHONY: install lint lint-fix test test-jest test-node test-legacy ci docker-ci docker-test docker-lint e2e e2e-up e2e-down
install:
@sed -i 's|"generalFunctions": "git+https://[^"]*"|"generalFunctions": "file:./nodes/generalFunctions"|' package.json
npm install
@git checkout -- package.json 2>/dev/null || true
lint:
npx eslint nodes/
lint-fix:
npx eslint nodes/ --fix
test-jest:
npx jest --forceExit
test-node:
node --test \
nodes/valve/test/basic/*.test.js \
nodes/valve/test/edge/*.test.js \
nodes/valve/test/integration/*.test.js \
nodes/valveGroupControl/test/basic/*.test.js \
nodes/valveGroupControl/test/edge/*.test.js \
nodes/valveGroupControl/test/integration/*.test.js
test-legacy:
node nodes/machineGroupControl/src/groupcontrol.test.js
node nodes/generalFunctions/src/nrmse/errorMetric.test.js
test: test-jest test-node test-legacy
ci: lint test
docker-ci:
docker compose run --rm ci
docker-test:
docker compose run --rm test
docker-lint:
docker compose run --rm lint
e2e:
bash test/e2e/run-e2e.sh
e2e-up:
docker compose -f docker-compose.e2e.yml up -d --build
e2e-down:
docker compose -f docker-compose.e2e.yml down