From a636704d1def7e4f5c5f839a7e78e9f60c75d137 Mon Sep 17 00:00:00 2001 From: Kerollmops Date: Tue, 8 Nov 2022 14:23:14 +0100 Subject: [PATCH] Add a test to check that we take care of soft deleted documents --- milli/src/update/settings.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/milli/src/update/settings.rs b/milli/src/update/settings.rs index 0f611572e..2211d7d93 100644 --- a/milli/src/update/settings.rs +++ b/milli/src/update/settings.rs @@ -714,6 +714,7 @@ mod tests { use super::*; use crate::error::Error; use crate::index::tests::TempIndex; + use crate::update::DeleteDocuments; use crate::{Criterion, Filter, SearchResult}; #[test] @@ -1489,4 +1490,34 @@ mod tests { }) .unwrap(); } + + #[test] + fn settings_must_ignore_soft_deleted() { + use serde_json::json; + + let index = TempIndex::new(); + + let mut docs = vec![]; + for i in 0..10 { + docs.push(json!({ "id": i, "title": format!("{:x}", i) })); + } + index.add_documents(documents! { docs }).unwrap(); + + let mut wtxn = index.write_txn().unwrap(); + let mut builder = DeleteDocuments::new(&mut wtxn, &index).unwrap(); + (0..5).for_each(|id| drop(builder.delete_external_id(&id.to_string()))); + builder.execute().unwrap(); + + index + .update_settings_using_wtxn(&mut wtxn, |settings| { + settings.set_searchable_fields(vec!["id".to_string()]); + }) + .unwrap(); + wtxn.commit().unwrap(); + + let rtxn = index.write_txn().unwrap(); + let docs: StdResult, _> = index.all_documents(&rtxn).unwrap().collect(); + let docs = docs.unwrap(); + assert_eq!(docs.len(), 5); + } }