Awn Awn
Back to Awn
Documentation menu — Testing and release
Operate / Testing and release
Version
1.0
Last verified
2026-08-09

Testing

composer validate --no-check-publish
composer dump-autoload
php artisan awn:extensions:validate
php artisan route:list -v --name=plugin
php artisan test --compact
./vendor/bin/pint --test
php artisan view:cache
npm run build

Contract tests load every enum manifest/driver/view and exercise invalid keys, options/ranges, thumbnails, route prefixes, organization and Super Admin routes/duplicates/settings collisions, grouped navigation, page patterns, slots, capabilities, widgets, and normalized defaults.

Lifecycle tests cover install, unavailable enable rejection, normalized configure/cache invalidation, reversible disable, data-preserving global deactivate/reinstall, destructive purge, compatibility, and blocked theme switches.

Tenant tests use two organizations/members for every read/mutation and guessed ULID. Assert dashboard authorization and tenant-scoped 404. Rendering matrix covers both themes, home/CMS/static/dynamic pages, all slots, priority, navigation, publication/preview, unavailable state, and hostile/stale settings.

Current suites:

  • PluginEngineTest: discovery, catalogs, Contact Form, lifecycle, compatibility, isolation, normalization, cache.
  • EventsPluginTest: CRUD isolation, dynamic pages, preview, dashboards, slot, seeding, purge.
  • FundraisingDashboardTest: every organization dashboard surface, project creation/state changes, private proof submission/download, and attributed donation verification.
  • PluginSuperAdminSurfaceTest: global navigation/widgets/pages, cross-organization read-only aggregation, global deactivation, authorization, and route-definition guards.
  • DeveloperDocumentationTest: registered pages and contract terms.
  • DocumentationAccuracyTest: allowlists, capabilities, routes, commands, contracts, config keys, and reference package paths.

Events tests verify the local/testing sample seeder runs under tenant scope and that purge removes plugin data. Fundraising tests use Storage::fake('local') to prove receipts are private and assert verified state/reviewer persistence.

For every Super Admin contribution, assert guest and ordinary-user denial, installed/active filtering, direct route middleware, absence of organization route parameters, organization labels on global rows, and no cross-tenant mutation controls.

Every configured doc page needs a readable registered path. Keep signatures exact, cache versions current, and implemented behavior out of Roadmap.