5 Commits

Author SHA1 Message Date
Vladimir Bryzgalov 42e311c05a feat(source): drop label → skip enqueue (or marked enqueue in dry-run); cf7stg_should_enqueue filter
Also extends test bootstrap autoloader to resolve classes in includes/sources/ and admin/ subdirectories.
2026-04-21 16:30:07 +05:00
Vladimir Bryzgalov bd45e84634 test: stable filter ordering, base TestCase reset, priority-aware remove_all_filters
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 15:51:46 +05:00
Vladimir Bryzgalov 40d5a2c23d test: stateful WP shims (add_filter/get_option/is_email) for upcoming silent-drop tests 2026-04-21 15:48:07 +05:00
Vladimir Bryzgalov 2e0a829e06 docs+tests: fix autoloader — underscores → hyphens + slug fallback
The regex '/([a-z0-9])([A-Z])/' does not split on underscores, so
Interface_Spam_Source, Settings_Page, Dashboard_Widget stayed as
'interface_spam_source', 'settings_page', 'dashboard_widget' after
strtolower — no file matched. Added str_replace('_', '-', ...).

Then Interface_Spam_Source's slug became 'interface-spam-source',
and the candidate 'includes/sources/interface-' . \$slug doubled
the prefix into 'interface-interface-spam-source.php'. Replaced
that candidate family with a slug-as-filename fallback that maps
interface-* slugs directly to their files.

Sanity check on plugin bootstrap: 17/17 classes/interfaces resolve.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 23:02:53 +05:00
Vladimir Bryzgalov 6aa1ef41e6 chore: add composer + phpunit dev scaffolding
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 21:53:22 +05:00