tests: Faster search::filters IT tests

Use shared server + unique indices

Related-to: https://github.com/meilisearch/meilisearch/issues/4840

Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
This commit is contained in:
Martin Tzvetanov Grigorov 2025-06-02 15:28:30 +03:00
parent 1d02efeab9
commit 3ebff65ef3
No known key found for this signature in database
GPG Key ID: 3194FD8C1AE300EF

View File

@ -10,17 +10,17 @@ use crate::{
#[actix_rt::test] #[actix_rt::test]
async fn search_with_filter_string_notation() { async fn search_with_filter_string_notation() {
let server = Server::new().await; let server = Server::new_shared();
let index = server.index("test"); let index = server.unique_index();
let (_, code) = index.update_settings(json!({"filterableAttributes": ["title"]})).await; let (_, code) = index.update_settings(json!({"filterableAttributes": ["title"]})).await;
meili_snap::snapshot!(code, @"202 Accepted"); snapshot!(code, @"202 Accepted");
let documents = DOCUMENTS.clone(); let documents = DOCUMENTS.clone();
let (task, code) = index.add_documents(documents, None).await; let (task, code) = index.add_documents(documents, None).await;
meili_snap::snapshot!(code, @"202 Accepted"); snapshot!(code, @"202 Accepted");
let res = index.wait_task(task.uid()).await; let res = index.wait_task(task.uid()).await.succeeded();
meili_snap::snapshot!(res["status"], @r###""succeeded""###); snapshot!(res["status"], @r###""succeeded""###);
index index
.search( .search(
@ -28,44 +28,44 @@ async fn search_with_filter_string_notation() {
"filter": "title = Gläss" "filter": "title = Gläss"
}), }),
|response, code| { |response, code| {
assert_eq!(code, 200, "{}", response); assert_eq!(code, 200, "{response}");
assert_eq!(response["hits"].as_array().unwrap().len(), 1); assert_eq!(response["hits"].as_array().unwrap().len(), 1);
}, },
) )
.await; .await;
let index = server.index("nested"); let nested_index = server.unique_index();
let (_, code) = let (_, code) =
index.update_settings(json!({"filterableAttributes": ["cattos", "doggos.age"]})).await; nested_index.update_settings(json!({"filterableAttributes": ["cattos", "doggos.age"]})).await;
meili_snap::snapshot!(code, @"202 Accepted"); snapshot!(code, @"202 Accepted");
let documents = NESTED_DOCUMENTS.clone(); let documents = NESTED_DOCUMENTS.clone();
let (task, code) = index.add_documents(documents, None).await; let (task, code) = nested_index.add_documents(documents, None).await;
meili_snap::snapshot!(code, @"202 Accepted"); snapshot!(code, @"202 Accepted");
let res = index.wait_task(task.uid()).await; let res = nested_index.wait_task(task.uid()).await.succeeded();
meili_snap::snapshot!(res["status"], @r###""succeeded""###); snapshot!(res["status"], @r###""succeeded""###);
index nested_index
.search( .search(
json!({ json!({
"filter": "cattos = pésti" "filter": "cattos = pésti"
}), }),
|response, code| { |response, code| {
assert_eq!(code, 200, "{}", response); assert_eq!(code, 200, "{response}");
assert_eq!(response["hits"].as_array().unwrap().len(), 1); assert_eq!(response["hits"].as_array().unwrap().len(), 1);
assert_eq!(response["hits"][0]["id"], json!(852)); assert_eq!(response["hits"][0]["id"], json!(852));
}, },
) )
.await; .await;
index nested_index
.search( .search(
json!({ json!({
"filter": "doggos.age > 5" "filter": "doggos.age > 5"
}), }),
|response, code| { |response, code| {
assert_eq!(code, 200, "{}", response); assert_eq!(code, 200, "{response}");
assert_eq!(response["hits"].as_array().unwrap().len(), 2); assert_eq!(response["hits"].as_array().unwrap().len(), 2);
assert_eq!(response["hits"][0]["id"], json!(654)); assert_eq!(response["hits"][0]["id"], json!(654));
assert_eq!(response["hits"][1]["id"], json!(951)); assert_eq!(response["hits"][1]["id"], json!(951));
@ -82,7 +82,7 @@ async fn search_with_filter_array_notation() {
"filter": ["title = Gläss"] "filter": ["title = Gläss"]
})) }))
.await; .await;
assert_eq!(code, 200, "{}", response); assert_eq!(code, 200, "{response}");
assert_eq!(response["hits"].as_array().unwrap().len(), 1); assert_eq!(response["hits"].as_array().unwrap().len(), 1);
let (response, code) = index let (response, code) = index
@ -90,7 +90,7 @@ async fn search_with_filter_array_notation() {
"filter": [["title = Gläss", "title = \"Shazam!\"", "title = \"Escape Room\""]] "filter": [["title = Gläss", "title = \"Shazam!\"", "title = \"Escape Room\""]]
})) }))
.await; .await;
assert_eq!(code, 200, "{}", response); assert_eq!(code, 200, "{response}");
assert_eq!(response["hits"].as_array().unwrap().len(), 3); assert_eq!(response["hits"].as_array().unwrap().len(), 3);
} }
@ -116,7 +116,7 @@ async fn search_with_contains_filter() {
"filter": "title CONTAINS cap" "filter": "title CONTAINS cap"
})) }))
.await; .await;
assert_eq!(code, 200, "{}", response); assert_eq!(code, 200, "{response}");
assert_eq!(response["hits"].as_array().unwrap().len(), 2); assert_eq!(response["hits"].as_array().unwrap().len(), 2);
} }
@ -276,8 +276,8 @@ async fn search_with_pattern_filter_settings_scenario_1() {
let index = server.index("test"); let index = server.index("test");
let (task, code) = index.add_documents(NESTED_DOCUMENTS.clone(), None).await; let (task, code) = index.add_documents(NESTED_DOCUMENTS.clone(), None).await;
assert_eq!(code, 202, "{}", task); assert_eq!(code, 202, "{task}");
let response = index.wait_task(task.uid()).await; let response = index.wait_task(task.uid()).await.succeeded();
snapshot!(response["status"], @r###""succeeded""###); snapshot!(response["status"], @r###""succeeded""###);
let (task, code) = index let (task, code) = index
@ -289,8 +289,8 @@ async fn search_with_pattern_filter_settings_scenario_1() {
} }
}]})) }]}))
.await; .await;
assert_eq!(code, 202, "{}", task); assert_eq!(code, 202, "{task}");
let response = index.wait_task(task.uid()).await; let response = index.wait_task(task.uid()).await.succeeded();
snapshot!(response["status"], @r###""succeeded""###); snapshot!(response["status"], @r###""succeeded""###);
// Check if the Equality filter works // Check if the Equality filter works
@ -355,8 +355,8 @@ async fn search_with_pattern_filter_settings_scenario_1() {
} }
}]})) }]}))
.await; .await;
assert_eq!(code, 202, "{}", task); assert_eq!(code, 202, "{task}");
let response = index.wait_task(task.uid()).await; let response = index.wait_task(task.uid()).await.succeeded();
snapshot!(response["status"], @r###""succeeded""###); snapshot!(response["status"], @r###""succeeded""###);
// Check if the Equality filter works // Check if the Equality filter works
@ -467,8 +467,8 @@ async fn search_with_pattern_filter_settings_scenario_1() {
} }
}]})) }]}))
.await; .await;
assert_eq!(code, 202, "{}", task); assert_eq!(code, 202, "{task}");
let response = index.wait_task(task.uid()).await; let response = index.wait_task(task.uid()).await.succeeded();
snapshot!(response["status"], @r###""succeeded""###); snapshot!(response["status"], @r###""succeeded""###);
// Check if the Equality filter returns an error // Check if the Equality filter returns an error
@ -567,8 +567,8 @@ async fn search_with_pattern_filter_settings_scenario_1() {
} }
}]})) }]}))
.await; .await;
assert_eq!(code, 202, "{}", task); assert_eq!(code, 202, "{task}");
let response = index.wait_task(task.uid()).await; let response = index.wait_task(task.uid()).await.succeeded();
snapshot!(response["status"], @r###""succeeded""###); snapshot!(response["status"], @r###""succeeded""###);
// Check if the Equality filter works // Check if the Equality filter works