diff --git a/CHANGELOG.md b/CHANGELOG.md index dbee7cfb9..6bcaac83f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,3 +3,4 @@ - Add the number of hits in search result (#541) - Add support for aligned crop in search result (#543) - Sanitize the content displayed in the web interface (#539) + - Add support of nested null and boolean values (#571 and #568) diff --git a/meilisearch-core/src/serde/convert_to_string.rs b/meilisearch-core/src/serde/convert_to_string.rs index bac0de99e..ca5c59a78 100644 --- a/meilisearch-core/src/serde/convert_to_string.rs +++ b/meilisearch-core/src/serde/convert_to_string.rs @@ -88,7 +88,7 @@ impl ser::Serializer for ConvertToString { } fn serialize_unit(self) -> Result { - Err(SerializerError::UnserializableType { type_name: "()" }) + Ok(String::new()) } fn serialize_unit_struct(self, _name: &'static str) -> Result { diff --git a/meilisearch-http/tests/documents_add.rs b/meilisearch-http/tests/documents_add.rs index ca87a8027..847179c7d 100644 --- a/meilisearch-http/tests/documents_add.rs +++ b/meilisearch-http/tests/documents_add.rs @@ -76,3 +76,38 @@ fn check_add_documents_with_nested_boolean() { assert_eq!(status_code, 200); assert_eq!(response["status"], "processed"); } + +// Test issue https://github.com/meilisearch/MeiliSearch/issues/571 +#[test] +fn check_add_documents_with_nested_null() { + let mut server = common::Server::with_uid("tasks"); + + // 1 - Create the index with no primary_key + + let body = json!({ "uid": "tasks" }); + let (response, status_code) = server.create_index(body); + assert_eq!(status_code, 201); + assert_eq!(response["primaryKey"], json!(null)); + + // 2 - Add a document that contains a null in a nested object + + let body = json!([{ + "id": 0, + "foo": { + "bar": null + } + }]); + + let url = "/indexes/tasks/documents"; + let (response, status_code) = server.post_request(&url, body); + eprintln!("{:#?}", response); + assert_eq!(status_code, 202); + let update_id = response["updateId"].as_u64().unwrap(); + server.wait_update_id(update_id); + + // 3 - Check update sucess + + let (response, status_code) = server.get_update_status(update_id); + assert_eq!(status_code, 200); + assert_eq!(response["status"], "processed"); +}