feat(wpmc S3): Helpers::get_term_by_slug with per-request cache
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace WPMultiCity\Tests;
|
||||
|
||||
use WPMultiCity\Helpers;
|
||||
|
||||
final class HelpersTest extends TestCase
|
||||
{
|
||||
public function test_get_term_by_slug_returns_wp_term_when_found(): void
|
||||
{
|
||||
$term = new \WP_Term();
|
||||
$term->term_id = 42;
|
||||
$term->slug = 'tyumen';
|
||||
$term->taxonomy = 'town';
|
||||
|
||||
\Brain\Monkey\Functions\expect('get_term_by')
|
||||
->once()
|
||||
->with('slug', 'tyumen', 'town')
|
||||
->andReturn($term);
|
||||
|
||||
$result = Helpers::get_term_by_slug('tyumen');
|
||||
|
||||
self::assertInstanceOf(\WP_Term::class, $result);
|
||||
self::assertSame(42, $result->term_id);
|
||||
self::assertSame('tyumen', $result->slug);
|
||||
}
|
||||
|
||||
public function test_get_term_by_slug_returns_null_when_not_found(): void
|
||||
{
|
||||
\Brain\Monkey\Functions\expect('get_term_by')
|
||||
->once()
|
||||
->with('slug', 'nonexistent', 'town')
|
||||
->andReturn(false);
|
||||
|
||||
self::assertNull(Helpers::get_term_by_slug('nonexistent'));
|
||||
}
|
||||
|
||||
public function test_get_term_by_slug_caches_results_within_request(): void
|
||||
{
|
||||
\Brain\Monkey\Functions\expect('get_term_by')
|
||||
->once()
|
||||
->with('slug', 'tyumen', 'town')
|
||||
->andReturn(false);
|
||||
|
||||
Helpers::get_term_by_slug('tyumen');
|
||||
Helpers::get_term_by_slug('tyumen');
|
||||
Helpers::get_term_by_slug('tyumen');
|
||||
|
||||
// Mockery ->once() at teardown verifies the cache stopped repeated calls.
|
||||
self::assertTrue(true);
|
||||
}
|
||||
}
|
||||
@@ -9,3 +9,7 @@ if (!defined('ABSPATH')) {
|
||||
|
||||
require_once __DIR__ . '/../includes/class-plugin.php';
|
||||
\WPMultiCity\Plugin::register_autoloader();
|
||||
|
||||
if (!class_exists('WP_Term', false)) {
|
||||
eval('class WP_Term { public int $term_id = 0; public string $slug = ""; public string $taxonomy = ""; }');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user