From c45d539852f37a8061cd052c4972f6e1c79d4c6b Mon Sep 17 00:00:00 2001 From: vnmedeiros Date: Fri, 11 Nov 2022 10:24:00 -0300 Subject: [PATCH] fix: tests --- src/classes/class-tainacan-search-engine.php | 8 ++--- tests/test-api-queries.php | 2 +- tests/test-api-search.php | 32 +++++++++++++++----- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/classes/class-tainacan-search-engine.php b/src/classes/class-tainacan-search-engine.php index 57f1cbcaa..0096000f7 100644 --- a/src/classes/class-tainacan-search-engine.php +++ b/src/classes/class-tainacan-search-engine.php @@ -129,7 +129,7 @@ class Search_Engine { } else { $searchQuery .= "{$seperator}($wpdb->posts.post_title LIKE {$esc_term} OR $wpdb->posts.post_content LIKE {$esc_term})"; } - $seperator = ' AND '; + $seperator = ' OR '; } return empty($searchQuery) ? false : "($searchQuery)"; } @@ -144,7 +144,7 @@ class Search_Engine { foreach ( $terms as $term ) { $esc_term = $wpdb->prepare("%s", $not_exact ? "%".$term."%" : $term); $search_tax_query .= "{$seperator}(tter.name LIKE {$esc_term})"; - $seperator = ' AND '; + $seperator = ' OR '; } if (empty($search_tax_query)) return ''; @@ -172,7 +172,7 @@ class Search_Engine { foreach ( $terms as $term ) { $esc_term = $wpdb->prepare("%s", $not_exact ? "%".$term."%" : $term); $search_meta_query .= "{$seperator}(m.meta_value LIKE {$esc_term})"; - $seperator = ' AND '; + $seperator = ' OR '; } if ( empty($search_meta_query) ) return ''; @@ -182,7 +182,7 @@ class Search_Engine { return "EXISTS ( SELECT m.post_id FROM $wpdb->postmeta m $join - WHERE ( $wpdb->posts.ID = m.post_id AND $search_meta_query ) + WHERE ( $wpdb->posts.ID = m.post_id AND ($search_meta_query) ) )"; } return ''; diff --git a/tests/test-api-queries.php b/tests/test-api-queries.php index c9040643d..9f2f3970f 100644 --- a/tests/test-api-queries.php +++ b/tests/test-api-queries.php @@ -172,7 +172,7 @@ class TAINACAN_REST_Queries extends TAINACAN_UnitApiTestCase { $this->assertEquals($collectionB->get_name(), $data1[0]['name']); // Search collection with a specific keyword and not other keyword - $search_query = ['search' => 'Collection -A']; + $search_query = ['search' => 'Collection -A', 'sentence' => false]; $search_request = new \WP_REST_Request('GET', $this->namespace . '/collections'); diff --git a/tests/test-api-search.php b/tests/test-api-search.php index 18d68e93e..c48c4a053 100644 --- a/tests/test-api-search.php +++ b/tests/test-api-search.php @@ -217,7 +217,15 @@ class TAINACAN_REST_Search extends TAINACAN_UnitApiTestCase { public function test_search() { $search_collection_poemas = new \WP_REST_Request('GET', $this->namespace . '/collection/' . $this->collection_poemas->get_id() . '/items'); - $search_query = ['search' => '"Vinícius de Moraes"']; + $search_query = ['search' => '"Vinícius de Moraes"', 'sentence' => false]; + $search_collection_poemas->set_query_params($search_query); + $search_response = $this->server->dispatch($search_collection_poemas); + $items = $search_response->get_data()['items']; + + $this->assertCount(2, $items); + + $search_collection_poemas = new \WP_REST_Request('GET', $this->namespace . '/collection/' . $this->collection_poemas->get_id() . '/items'); + $search_query = ['search' => 'Vinícius de Moraes', 'sentence' => true]; $search_collection_poemas->set_query_params($search_query); $search_response = $this->server->dispatch($search_collection_poemas); $items = $search_response->get_data()['items']; @@ -225,7 +233,15 @@ class TAINACAN_REST_Search extends TAINACAN_UnitApiTestCase { $this->assertCount(2, $items); $search_collection_frase = new \WP_REST_Request('GET', $this->namespace . '/collection/' . $this->collection_frases->get_id() . '/items'); - $search_query = ['search' => '"Guimarães Rosa"']; + $search_query = ['search' => '"Guimarães Rosa"', 'sentence' => false]; + $search_collection_frase->set_query_params($search_query); + $search_response = $this->server->dispatch($search_collection_frase); + $items = $search_response->get_data()['items']; + + $this->assertCount(2, $items); + + $search_collection_frase = new \WP_REST_Request('GET', $this->namespace . '/collection/' . $this->collection_frases->get_id() . '/items'); + $search_query = ['search' => 'Guimarães Rosa', 'sentence' => true]; $search_collection_frase->set_query_params($search_query); $search_response = $this->server->dispatch($search_collection_frase); $items = $search_response->get_data()['items']; @@ -234,7 +250,7 @@ class TAINACAN_REST_Search extends TAINACAN_UnitApiTestCase { $search_items = new \WP_REST_Request('GET', $this->namespace . '/items'); - $search_query = ['search' => 'texto']; + $search_query = ['search' => 'texto', 'sentence' => false]; $search_items->set_query_params($search_query); $search_response = $this->server->dispatch($search_items); $items = $search_response->get_data()['items']; @@ -242,7 +258,7 @@ class TAINACAN_REST_Search extends TAINACAN_UnitApiTestCase { $this->assertCount(4, $items); $search_items = new \WP_REST_Request('GET', $this->namespace . '/items'); - $search_query = ['search' => 'texto poesia']; + $search_query = ['search' => 'texto poesia', 'sentence' => false]; $search_items->set_query_params($search_query); $search_response = $this->server->dispatch($search_items); $items = $search_response->get_data()['items']; @@ -250,7 +266,7 @@ class TAINACAN_REST_Search extends TAINACAN_UnitApiTestCase { $this->assertCount(4, $items); $search_items = new \WP_REST_Request('GET', $this->namespace . '/items'); - $search_query = ['search' => '"texto poesia"']; + $search_query = ['search' => '"texto poesia"', 'sentence' => false]; $search_items->set_query_params($search_query); $search_response = $this->server->dispatch($search_items); $items = $search_response->get_data()['items']; @@ -258,15 +274,15 @@ class TAINACAN_REST_Search extends TAINACAN_UnitApiTestCase { $this->assertCount(1, $items); $search_items = new \WP_REST_Request('GET', $this->namespace . '/items'); - $search_query = ['search' => '"texto poesia" sagarana']; + $search_query = ['search' => '"texto poesia" sagarana', 'sentence' => false]; $search_items->set_query_params($search_query); $search_response = $this->server->dispatch($search_items); $items = $search_response->get_data()['items']; - $this->assertCount(2, $items); + $search_items = new \WP_REST_Request('GET', $this->namespace . '/items'); - $search_query = ['search' => 'infinito dure']; + $search_query = ['search' => 'infinito dure', 'sentence' => false]; $search_items->set_query_params($search_query); $search_response = $this->server->dispatch($search_items); $items = $search_response->get_data()['items'];