From eeede1ab6c101030e0e2df97eff5fa6f727525ac Mon Sep 17 00:00:00 2001 From: rxu Date: Thu, 31 Oct 2024 00:51:05 +0700 Subject: [PATCH] [ticket/17422] Add author_id search tests PHPBB-17422 --- tests/functional/search/base.php | 37 ++++++++++++++++++- .../phpbb_functional_test_case.php | 2 +- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/tests/functional/search/base.php b/tests/functional/search/base.php index 0e3aa80fa3..04b69a4934 100644 --- a/tests/functional/search/base.php +++ b/tests/functional/search/base.php @@ -49,6 +49,30 @@ abstract class phpbb_functional_search_base extends phpbb_functional_test_case $this->assertStringContainsString("Search found $topics_found match", $crawler->filter('.searchresults-title')->text(), $this->search_backend); } + protected function assert_search_posts_by_author_id($author_id, $posts_found, $sort_key = '', $sort_dir = '') + { + // Test obtaining data from cache if sorting direction is set + if (!$sort_dir) + { + $this->purge_cache(); + } + $crawler = self::request('GET', 'search.php?author_id=' . $author_id . ($sort_key ? "&sk=$sort_key" : '') . ($sort_dir ? "&sk=$sort_dir" : '')); + $this->assertEquals($posts_found, $crawler->filter('.postbody')->count(), $this->search_backend); + $this->assertStringContainsString("Search found $posts_found match", $crawler->filter('.searchresults-title')->text(), $this->search_backend); + } + + protected function assert_search_topics_by_author_id($author_id, $topics_found, $sort_key = '', $sort_dir = '') + { + // Test obtaining data from cache if sorting direction is set + if (!$sort_dir) + { + $this->purge_cache(); + } + $crawler = self::request('GET', 'search.php?sr=topics&author_id=' . $author_id . ($sort_key ? "&sk=$sort_key" : '') . ($sort_dir ? "&sk=$sort_dir" : '')); + $this->assertEquals($topics_found, $crawler->filter('.row')->count(), $this->search_backend); + $this->assertStringContainsString("Search found $topics_found match", $crawler->filter('.searchresults-title')->text(), $this->search_backend); + } + protected function assert_search_in_topic($topic_id, $keywords, $posts_found, $sort_key = '') { $this->purge_cache(); @@ -93,10 +117,16 @@ abstract class phpbb_functional_search_base extends phpbb_functional_test_case $this->add_lang('common'); // Create a new standard user if needed, topic and post to test searh for author - if (!$this->user_exists('searchforauthoruser')) + $searchforauthoruser_name = 'searchforauthoruser'; + $searchforauthoruser_id = null; // if the user exists, array with user_id will be returned + if (!$this->user_exists($searchforauthoruser_name, $searchforauthoruser_id)) { $searchforauthoruser_id = $this->create_user('searchforauthoruser'); } + else + { + $searchforauthoruser_id = (int) $searchforauthoruser_id[0]; + } $this->remove_user_group('NEWLY_REGISTERED', ['searchforauthoruser']); $this->set_flood_interval(0); $this->login('searchforauthoruser'); @@ -161,6 +191,11 @@ abstract class phpbb_functional_search_base extends phpbb_functional_test_case $this->assert_search_posts_by_author('searchforauthoruser', 2, $sort_key); $this->assert_search_topics_by_author('searchforauthoruser', 1, $sort_key); + + $this->assert_search_posts_by_author_id($searchforauthoruser_id, 2, $sort_key); + $this->assert_search_topics_by_author_id($searchforauthoruser_id, 1, $sort_key); + $this->assert_search_posts_by_author_id($searchforauthoruser_id, 2, $sort_key, 'a'); //search asc order + $this->assert_search_topics_by_author_id($searchforauthoruser_id, 1, $sort_key, 'a'); // search asc order } $this->assert_search_not_found('loremipsumdedo'); diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index 9e4cb364d0..1652be8e44 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -1525,7 +1525,7 @@ class phpbb_functional_test_case extends phpbb_test_case * * @return bool Returns true if a user exists, false otherwise */ - protected function user_exists($username, $user_id = null) + protected function user_exists(&$username, &$user_id = null) { global $db;