v1.2.0 — Complete the test pyramid + DI cleanup
Closes #17 (meta).
Highlights
- MediaArrayBuilder kernel safety net (#18): 18 new kernel tests covering buildImage / buildFileImage / buildVideo / buildDocument / buildImageLink / buildFileImageLink / getSvgViewBoxDimensions against real Drupal media + file + image entities.
- EntityHelper field-getter kernel safety net (#19): 18 new kernel tests covering text/textarea/select/double/boolean/date/daterange/link/term/entity_reference getters.
- FilterLinks DI (#20): request_stack via ContainerFactoryPluginInterface. \Drupal::request() static call gone.
- TwigExtension DI (#21): string_translation via constructor. \Drupal::translation() static call gone.
- scripts/dev-link-module.sh (#22): single source of truth for local + CI module wiring. find -maxdepth 1 picks up any new top-level file automatically.
- Coverage floor raised to 45% (current observed: 45.88%).
Stats
- 228 tests, 976 assertions
- Coverage: 45.88% (+13.55% over v1.1.0)
- PHPStan: clean at level 1
- 6 PRs merged: #24, #25, #26, #27, #28, #29
Deferred to v1.3.0
- buildRemoteVideo kernel coverage (needs oembed bundle + network mocking)
- buildLottie + getImageField / getFileField / getMediaField kernel coverage
- Resizer kernel coverage (177-line service with 0% kernel cover)
- contrib-gated getters (getOfficeHoursField, getAddressField, getGeoField, getPriceField, getWebformField)
- 80% coverage target — requires the above