diff --git a/crates/meilisearch/tests/settings/get_settings.rs b/crates/meilisearch/tests/settings/get_settings.rs index 2a7d713f2..16ab9a7ae 100644 --- a/crates/meilisearch/tests/settings/get_settings.rs +++ b/crates/meilisearch/tests/settings/get_settings.rs @@ -1,3 +1,5 @@ +use meili_snap::{json_string, snapshot}; + use crate::common::Server; use crate::json; @@ -510,3 +512,62 @@ async fn set_and_reset_distinct_attribute_with_dedicated_route() { assert_eq!(response, json!(null)); } + +#[actix_rt::test] +async fn granular_filterable_attributes() { + let server = Server::new().await; + let index = server.index("test"); + index.create(None).await; + + let (response, code) = + index.update_settings(json!({ "filterableAttributes": [ + { "patterns": ["name"], "features": { "facetSearch": true, "filter": {"equality": true, "comparison": false} } }, + { "patterns": ["age"], "features": { "facetSearch": false, "filter": {"equality": true, "comparison": true} } }, + { "patterns": ["id"] } + ] })).await; + assert_eq!(code, 202); + index.wait_task(response.uid()).await.succeeded(); + + let (response, code) = index.settings().await; + assert_eq!(code, 200, "{}", response); + snapshot!(json_string!(response["filterableAttributes"]), @r###" + [ + { + "patterns": [ + "name" + ], + "features": { + "facetSearch": true, + "filter": { + "equality": true, + "comparison": false + } + } + }, + { + "patterns": [ + "age" + ], + "features": { + "facetSearch": false, + "filter": { + "equality": true, + "comparison": true + } + } + }, + { + "patterns": [ + "id" + ], + "features": { + "facetSearch": false, + "filter": { + "equality": true, + "comparison": false + } + } + } + ] + "###); +}