instance = new Super_Ajax_Search();
}
// ── 1. Empty / Short Query Returns Error ──────────────────────
public function test_empty_query_returns_error(): void {
$method = $this->getPrivateMethod( 'perform_search' );
$result = $method->invoke( $this->instance, '', 0 );
$this->assertInstanceOf( WP_Error::class, $result );
$this->assertSame( 'query_too_short', $result->get_error_code() );
}
public function test_single_char_query_returns_error(): void {
$method = $this->getPrivateMethod( 'perform_search' );
$result = $method->invoke( $this->instance, 'a', 0 );
$this->assertInstanceOf( WP_Error::class, $result );
}
// ── 2. Input Sanitization Against XSS ─────────────────────────
public function test_sanitize_text_field_strips_tags(): void {
$malicious = 'hello';
$clean = sanitize_text_field( $malicious );
$this->assertStringNotContainsString( ' our site for more info.';
$excerpt = $method->invoke( $this->instance, $content, 'site' );
$this->assertStringNotContainsString( '