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); } public function test_current_town_returns_slug_when_uri_matches_existing_town(): void { $_SERVER['REQUEST_URI'] = '/tyumen/some-service/'; \Brain\Monkey\Functions\expect('get_terms') ->once() ->with('town', \Mockery::on(function ($args) { return ($args['hide_empty'] ?? null) === false && ($args['fields'] ?? null) === 'id=>slug'; })) ->andReturn([10 => 'spb', 11 => 'tyumen']); self::assertSame('tyumen', Helpers::current_town()); } }