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.
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Cf7stg\Tests;
|
||||
|
||||
use Cf7stg\CF7Source;
|
||||
use Cf7stg\Settings;
|
||||
|
||||
final class CF7SourceDropTest extends Cf7stgTestCase
|
||||
{
|
||||
public function test_drop_label_with_dry_run_off_returns_skip_decision(): void
|
||||
{
|
||||
Settings::set_dry_run_drop(false);
|
||||
$decision = CF7Source::decide_drop_action('drop');
|
||||
self::assertSame('skip', $decision['action']);
|
||||
self::assertSame('real', $decision['counter_mode']);
|
||||
}
|
||||
|
||||
public function test_drop_label_with_dry_run_on_returns_enqueue_with_marker(): void
|
||||
{
|
||||
Settings::set_dry_run_drop(true);
|
||||
$decision = CF7Source::decide_drop_action('drop');
|
||||
self::assertSame('enqueue_marked', $decision['action']);
|
||||
self::assertSame('dry_run', $decision['counter_mode']);
|
||||
}
|
||||
|
||||
public function test_non_drop_label_returns_normal_enqueue(): void
|
||||
{
|
||||
$decision = CF7Source::decide_drop_action('unclear');
|
||||
self::assertSame('enqueue', $decision['action']);
|
||||
self::assertNull($decision['counter_mode']);
|
||||
}
|
||||
|
||||
public function test_non_drop_label_client_returns_normal_enqueue(): void
|
||||
{
|
||||
$decision = CF7Source::decide_drop_action('client');
|
||||
self::assertSame('enqueue', $decision['action']);
|
||||
self::assertNull($decision['counter_mode']);
|
||||
}
|
||||
|
||||
public function test_non_drop_label_spam_returns_normal_enqueue(): void
|
||||
{
|
||||
$decision = CF7Source::decide_drop_action('spam');
|
||||
self::assertSame('enqueue', $decision['action']);
|
||||
self::assertNull($decision['counter_mode']);
|
||||
}
|
||||
|
||||
public function test_filter_should_enqueue_can_block_unclear(): void
|
||||
{
|
||||
add_filter('cf7stg_should_enqueue', static function ($should, $label) {
|
||||
return $label === 'unclear' ? false : $should;
|
||||
}, 10, 2);
|
||||
self::assertFalse(CF7Source::should_enqueue('unclear', [], null));
|
||||
}
|
||||
|
||||
public function test_filter_should_enqueue_default_true(): void
|
||||
{
|
||||
self::assertTrue(CF7Source::should_enqueue('client', [], null));
|
||||
}
|
||||
|
||||
public function test_filter_should_enqueue_passes_fields_and_submission(): void
|
||||
{
|
||||
$captured = [];
|
||||
add_filter('cf7stg_should_enqueue', static function ($should, $label, $fields, $submission) use (&$captured) {
|
||||
$captured = ['label' => $label, 'fields' => $fields, 'submission' => $submission];
|
||||
return $should;
|
||||
}, 10, 4);
|
||||
|
||||
$sub = new \stdClass();
|
||||
$sub->marker = 'test-submission';
|
||||
CF7Source::should_enqueue('client', ['k' => 'v'], $sub);
|
||||
|
||||
self::assertSame('client', $captured['label']);
|
||||
self::assertSame(['k' => 'v'], $captured['fields']);
|
||||
self::assertSame($sub, $captured['submission']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user