diff --git a/meilisearch/tests/search/geo.rs b/meilisearch/tests/search/geo.rs new file mode 100644 index 000000000..4253bc210 --- /dev/null +++ b/meilisearch/tests/search/geo.rs @@ -0,0 +1,62 @@ +use once_cell::sync::Lazy; +use serde_json::{json, Value}; + +use crate::common::Server; + +pub(self) static DOCUMENTS: Lazy = Lazy::new(|| { + json!([ + { + "id": 1, + "name": "Taco Truck", + "address": "444 Salsa Street, Burritoville", + "type": "Mexican", + "rating": 9, + "_geo": { + "lat": 34.0522, + "lng": -118.2437 + } + }, + { + "id": 2, + "name": "La Bella Italia", + "address": "456 Elm Street, Townsville", + "type": "Italian", + "rating": 9, + "_geo": { + "lat": "45.4777599", + "lng": "9.1967508" + } + }, + { + "id": 3, + "name": "Crêpe Truck", + "address": "2 Billig Avenue, Rouenville", + "type": "French", + "rating": 10 + } + ]) +}); + +#[actix_rt::test] +async fn geo_sort_with_geo_strings() { + let server = Server::new().await; + let index = server.index("test"); + + let documents = DOCUMENTS.clone(); + index.update_settings_filterable_attributes(json!(["_geo"])).await; + index.update_settings_sortable_attributes(json!(["_geo"])).await; + index.add_documents(documents, None).await; + index.wait_task(2).await; + + index + .search( + json!({ + "filter": "_geoRadius(45.472735, 9.184019, 10000)", + "sort": ["_geoPoint(0.0, 0.0):asc"] + }), + |response, code| { + assert_eq!(code, 200, "{}", response); + }, + ) + .await; +} diff --git a/meilisearch/tests/search/mod.rs b/meilisearch/tests/search/mod.rs index 9c80aed31..d560ba734 100644 --- a/meilisearch/tests/search/mod.rs +++ b/meilisearch/tests/search/mod.rs @@ -4,6 +4,7 @@ mod errors; mod facet_search; mod formatted; +mod geo; mod multi; mod pagination; mod restrict_searchable;