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:
Vladimir Bryzgalov
2026-05-12 19:56:54 +05:00
parent 176d8e0c0b
commit 58838b0c19
3 changed files with 67 additions and 0 deletions
+53
View File
@@ -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);
}
}