Skip to content

2.9.0

Latest

Choose a tag to compare

@dereuromark dereuromark released this 21 May 17:07
· 11 commits to master since this release
8be39d1

Fixes

  • TestCases: render the case view correctly on its early-return paths instead of falling through to a 500. (#51)
  • Migrations: fix actions that broke when the Migrations plugin is installed — an array-to-string in index/confirm, a fatal function redeclaration in the drift-check view on re-render, and a 500 when the temp-database flow runs on a non-MySQL driver (now degrades gracefully). (#64)
  • Wrap the page-header row on phones so the action buttons stay on screen.
  • Lighten the form placeholder color so it isn't mistaken for real content.

Improvements

  • New — Association ↔ DB foreign-key audit (/test-helper/associations): a symmetric diff between a table's declared associations (belongsTo/hasMany/hasOne/belongsToMany) and the database's actual foreign keys, with a copy-paste fix on every finding. It flags associations with no DB constraint, DB foreign keys with no association, target/column mismatches, and *_id columns that look like foreign keys but have neither. App and first-party plugin tables are scanned by default (vendor opt-in), via a color-coded summary matrix, per-table detail, and a flat scan. (#44)
  • On top of that constraint diff, the audit adds several cross-cutting layers:
    • Key type — flags a foreign key whose column type disagrees with the referenced key (e.g. integer referencing uuid) or is narrower than it (e.g. integer → biginteger); matching non-integer keys are an info hint. Suggests a changeColumn() fix; silence the info via TestHelper.associationAudit.preferIntegerKeys. (#46, #47)
    • Cascade rules — compares a hasMany/hasOne dependent intent against the matching foreign key's ON DELETE rule, with a fix for either side. (#53)
    • Index presence — flags foreign-key-style columns that are not the leading column of any index (so joins and lookups table-scan); info-level, gated by TestHelper.associationAudit.checkIndexes (default true). Especially useful on PostgreSQL, where a foreign-key constraint does not auto-create an index on the referencing column. (#58)
    • Composite foreign keys are now diffed instead of skipped, and the summary matrix gained dedicated Key type, Cascade, and Index columns. (#53, #58)
  • Findings are sorted worst-first, and the flat scan has topic filter chips to mute whole categories at once. (#45, #50)
  • Add an optional "back to app" link in the TestHelper navbar. (#56)
associations_matrix

Full Changelog: 2.8.4...2.9.0