Skip to content

feat: add unit tests for plugin metadata resolution#70

Merged
subhashkhileri merged 1 commit into
redhat-developer:mainfrom
subhashkhileri:add-plugin-metadata-unit-test
Mar 31, 2026
Merged

feat: add unit tests for plugin metadata resolution#70
subhashkhileri merged 1 commit into
redhat-developer:mainfrom
subhashkhileri:add-plugin-metadata-unit-test

Conversation

@subhashkhileri
Copy link
Copy Markdown
Member

Summary

  • Add 55 unit tests covering all dynamic plugin config resolution scenarios
  • Split tests into focused files under src/utils/tests/:
    • plugin-metadata.test.ts — pure utilities (extractPluginName, getNormalizedPluginMergeKey,
      disablePluginWrappers, generatePluginsFromMetadata)
    • plugin-metadata.pr.test.ts — PR mode: metadata injection, user override, OCI resolution, skip
      injection, precedence
    • plugin-metadata.nightly.test.ts — nightly detection (isNightlyJob), nightly resolution, user config
      preservation
    • plugin-metadata.fixtures.test.ts — realistic workspace fixtures (argocd, scorecard, github-events,
      topology, global-header, orchestrator) + edge cases
  • Add shared test helpers (helpers.ts) for env var isolation and metadata fixture creation
  • Add yarn build && yarn test to pre-commit hook so tests run locally before every commit

What's tested

  • OCI resolution: ghcr.io, quay.io/rhdh, registry.access.redhat.com, shared images with aliases
    (redhat-resource-optimization pattern)
  • Plugin config merging: metadata as base, user pluginConfig as override, deep merge with partial
    overrides
  • Mode detection: E2E_NIGHTLY_MODE strict check (rejects "false"), JOB_NAME periodic detection,
    PR precedence over nightly
  • Passthrough: local paths, npm packages with integrity, cross-workspace plugins, disabled plugins
  • Edge cases: non-existent metadata dir, empty plugins, config local path with OCI metadata, extra
    fields preserved

Verified by breaking

Each critical code path was intentionally broken to confirm tests fail with clear messages:

Break Tests failed
Never resolve OCI refs 10
Always inject metadata (nightly too) 3
Swap merge order (metadata wins over user) 3
Drop plugin fields during resolution 3
Include pluginConfig in generation 3
Hardcoded ghcr.io registry 9

@subhashkhileri subhashkhileri merged commit dd7eccd into redhat-developer:main Mar 31, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant