diff --git a/tests/common/index.rs b/tests/common/index.rs index a50f8e6a3..53f48706d 100644 --- a/tests/common/index.rs +++ b/tests/common/index.rs @@ -131,6 +131,16 @@ impl Index<'_> { let url = format!("/indexes/{}/documents/delete-batch", self.uid); self.service.post(url, serde_json::to_value(&ids).unwrap()).await } + + pub async fn settings(&self) -> (Value, StatusCode) { + let url = format!("/indexes/{}/settings", self.uid); + self.service.get(url).await + } + + pub async fn update_settings(&self, settings: Value) -> (Value, StatusCode) { + let url = format!("/indexes/{}/settings", self.uid); + self.service.post(url, settings).await + } } pub struct GetDocumentOptions; diff --git a/tests/common/server.rs b/tests/common/server.rs index de32a2045..d7d76445c 100644 --- a/tests/common/server.rs +++ b/tests/common/server.rs @@ -10,7 +10,7 @@ use super::index::Index; use super::service::Service; pub struct Server { - service: Service, + pub service: Service, } impl Server { diff --git a/tests/settings/get_settings.rs b/tests/settings/get_settings.rs new file mode 100644 index 000000000..f66cf03dd --- /dev/null +++ b/tests/settings/get_settings.rs @@ -0,0 +1,87 @@ +use crate::common::Server; +use serde_json::json; + +#[actix_rt::test] +async fn get_settings_unexisting_index() { + let server = Server::new().await; + let (_response, code) = server.index("test").settings().await; + assert_eq!(code, 400) +} + +#[actix_rt::test] +async fn get_settings() { + let server = Server::new().await; + let index = server.index("test"); + index.create(None).await; + let (response, code) = index.settings().await; + assert_eq!(code, 200); + let settings = response.as_object().unwrap(); + assert_eq!(settings.keys().len(), 3); + assert_eq!(settings["displayedAttributes"], json!(["*"])); + assert_eq!(settings["searchableAttributes"], json!(["*"])); + assert_eq!(settings["facetedAttributes"], json!({})); +} + +#[actix_rt::test] +async fn update_setting_unexisting_index() { + let server = Server::new().await; + let index = server.index("test"); + let (_response, code) = index.update_settings(json!({})).await; + assert_eq!(code, 200); + let (_response, code) = index.get().await; + assert_eq!(code, 200); +} + +macro_rules! test_setting_routes { + ($($setting:ident), *) => { + $( + mod $setting { + use crate::common::Server; + + #[actix_rt::test] + async fn get_unexisting_index() { + let server = Server::new().await; + let url = format!("/indexes/test/settings/{}", + stringify!($setting) + .chars() + .map(|c| if c == '_' { '-' } else { c }) + .collect::()); + let (_response, code) = server.service.get(url).await; + assert_eq!(code, 400); + } + + #[actix_rt::test] + async fn update_unexisting_index() { + let server = Server::new().await; + let url = format!("/indexes/test/settings/{}", + stringify!($setting) + .chars() + .map(|c| if c == '_' { '-' } else { c }) + .collect::()); + let (_response, code) = server.service.post(url, serde_json::Value::Null).await; + assert_eq!(code, 200); + let (_response, code) = server.index("test").get().await; + assert_eq!(code, 200); + } + + #[actix_rt::test] + #[ignore] + async fn delete_unexisting_index() { + let server = Server::new().await; + let url = format!("/indexes/test/settings/{}", + stringify!($setting) + .chars() + .map(|c| if c == '_' { '-' } else { c }) + .collect::()); + let (_response, code) = server.service.delete(url).await; + assert_eq!(code, 400); + } + } + )* + }; +} + +test_setting_routes!( + attributes_for_faceting, + displayed_attributes, + searchable_attributes); diff --git a/tests/settings/mod.rs b/tests/settings/mod.rs new file mode 100644 index 000000000..c9e93c85d --- /dev/null +++ b/tests/settings/mod.rs @@ -0,0 +1 @@ +mod get_settings;