feat(classifier): count_placeholder_fields() helper for drop-logic
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -102,4 +102,43 @@ final class ClassifierDropTest extends Cf7stgTestCase
|
||||
$fields = ['your-name' => ['OB', 'MU']];
|
||||
self::assertFalse(Classifier::has_short_latin_name($fields));
|
||||
}
|
||||
|
||||
public function test_count_placeholder_fields_screenshot_1(): void
|
||||
{
|
||||
$fields = require __DIR__ . '/fixtures/spam-screenshot-1.php';
|
||||
// text-785: OB(2), text-787: 70(2), text-786: BP(2), text-788: ZZ(2), text-789: QV(2)
|
||||
// text-790: 10 цифр — не placeholder. acceptance-data: служебное → исключено.
|
||||
self::assertGreaterThanOrEqual(3, Classifier::count_placeholder_fields($fields));
|
||||
}
|
||||
|
||||
public function test_count_placeholder_fields_ignores_empty(): void
|
||||
{
|
||||
$fields = ['a' => 'AB', 'b' => '', 'c' => 'XY', 'd' => null, 'e' => 'CD'];
|
||||
self::assertSame(3, Classifier::count_placeholder_fields($fields));
|
||||
}
|
||||
|
||||
public function test_count_placeholder_fields_ignores_long_values(): void
|
||||
{
|
||||
$fields = ['a' => 'AB', 'b' => 'Hello world', 'c' => 'CD'];
|
||||
self::assertSame(2, Classifier::count_placeholder_fields($fields));
|
||||
}
|
||||
|
||||
public function test_count_placeholder_fields_ignores_service_keys(): void
|
||||
{
|
||||
$fields = [
|
||||
'acceptance-data' => '1',
|
||||
'_wpcf7' => 'AB',
|
||||
'_wpcf7_unit_tag' => 'XY',
|
||||
'g-recaptcha-response' => 'CD',
|
||||
'real' => 'EF',
|
||||
];
|
||||
self::assertSame(1, Classifier::count_placeholder_fields($fields));
|
||||
}
|
||||
|
||||
public function test_count_placeholder_fields_ignores_non_alnum(): void
|
||||
{
|
||||
// Кириллица или с пробелами не считается placeholder
|
||||
$fields = ['a' => 'Ия', 'b' => 'a b', 'c' => 'XY'];
|
||||
self::assertSame(1, Classifier::count_placeholder_fields($fields));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user