fix displayed attrs empty array bug

This commit is contained in:
mpostma 2020-07-15 19:21:03 +02:00
parent de4caef468
commit 4b5437a882
2 changed files with 18 additions and 2 deletions

View File

@ -70,7 +70,7 @@ pub fn apply_settings_update(
match settings.searchable_attributes.clone() { match settings.searchable_attributes.clone() {
UpdateState::Update(v) => { UpdateState::Update(v) => {
if v.len() == 1 && v[0] == "*" { if v.len() == 1 && v[0] == "*" || v.is_empty() {
schema.set_all_fields_as_indexed(); schema.set_all_fields_as_indexed();
} else { } else {
schema.update_indexed(v)?; schema.update_indexed(v)?;
@ -86,7 +86,7 @@ pub fn apply_settings_update(
match settings.displayed_attributes.clone() { match settings.displayed_attributes.clone() {
UpdateState::Update(v) => { UpdateState::Update(v) => {
// safe to unwrap because len is 1 // safe to unwrap because len is 1
if v.len() == 1 && v.iter().next().unwrap() == "*" { if v.len() == 1 && v.iter().next().unwrap() == "*" || v.is_empty() {
schema.set_all_fields_as_displayed(); schema.set_all_fields_as_displayed();
} else { } else {
schema.update_displayed(v)? schema.update_displayed(v)?

View File

@ -426,10 +426,26 @@ async fn displayed_and_searchable_attributes_reset_to_wildcard() {
let mut server = common::Server::test_server().await; let mut server = common::Server::test_server().await;
server.update_all_settings(json!({ "searchableAttributes": ["color"], "displayedAttributes": ["color"] })).await; server.update_all_settings(json!({ "searchableAttributes": ["color"], "displayedAttributes": ["color"] })).await;
let (response, _) = server.get_all_settings().await; let (response, _) = server.get_all_settings().await;
assert_eq!(response["searchableAttributes"].as_array().unwrap()[0], "color"); assert_eq!(response["searchableAttributes"].as_array().unwrap()[0], "color");
assert_eq!(response["displayedAttributes"].as_array().unwrap()[0], "color"); assert_eq!(response["displayedAttributes"].as_array().unwrap()[0], "color");
server.delete_searchable_attributes().await; server.delete_searchable_attributes().await;
server.delete_displayed_attributes().await; server.delete_displayed_attributes().await;
let (response, _) = server.get_all_settings().await;
assert_eq!(response["searchableAttributes"].as_array().unwrap()[0], "*");
assert_eq!(response["displayedAttributes"].as_array().unwrap()[0], "*");
let mut server = common::Server::test_server().await;
server.update_all_settings(json!({ "searchableAttributes": ["color"], "displayedAttributes": ["color"] })).await;
let (response, _) = server.get_all_settings().await;
assert_eq!(response["searchableAttributes"].as_array().unwrap()[0], "color");
assert_eq!(response["displayedAttributes"].as_array().unwrap()[0], "color");
server.update_all_settings(json!({ "searchableAttributes": [], "displayedAttributes": [] })).await;
let (response, _) = server.get_all_settings().await; let (response, _) = server.get_all_settings().await;
assert_eq!(response["searchableAttributes"].as_array().unwrap()[0], "*"); assert_eq!(response["searchableAttributes"].as_array().unwrap()[0], "*");
assert_eq!(response["displayedAttributes"].as_array().unwrap()[0], "*"); assert_eq!(response["displayedAttributes"].as_array().unwrap()[0], "*");