From bb47a7af3145bd04e3afb2f316d2ed92796ce10b Mon Sep 17 00:00:00 2001 From: Jeff Baskin Date: Thu, 5 Mar 2026 08:06:38 -0500 Subject: [PATCH] Moved delete with index test. --- src/document/create.rs | 5 +++-- tests/delete_test.rs | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/document/create.rs b/src/document/create.rs index 35d9b3f..de2aa42 100644 --- a/src/document/create.rs +++ b/src/document/create.rs @@ -566,7 +566,8 @@ impl DocumentFile { }; let records = match self.run_query(delete.get_query()) { Ok(data) => data, - Err(err) => { + Err(mut err) => { + err.add_parent(ErrorID::Document(msg.doc_name().into())); let reply = msg.response(err); self.queue.send(reply); return; @@ -2114,7 +2115,6 @@ mod document_files { _ => unreachable!("got {:?}, should have been empty", action), } } - */ #[test] fn does_delete_return_query_errors() { @@ -2162,6 +2162,7 @@ mod document_files { _ => unreachable!("got {:?}, should have added entry", action), } } + */ #[test] fn can_query_trigger_reaction() { diff --git a/tests/delete_test.rs b/tests/delete_test.rs index 6ac324e..6f5fbd9 100644 --- a/tests/delete_test.rs +++ b/tests/delete_test.rs @@ -1,7 +1,8 @@ mod support; use morethantext::{ - CalcValue, Calculation, Delete, Field, FieldType, MoreThanText, Operand, Query, + Addition, CalcValue, Calculation, Delete, ErrorID, Field, FieldType, IndexType, MTTError, + MoreThanText, Name, Operand, Query, }; use std::collections::HashSet; use support::{setup_range, TestDocument}; @@ -102,3 +103,39 @@ fn can_delete_multiple() { qexpected ); } + +#[test] +fn does_delete_error_on_a_bad_query() { + let (mut mtt, test_doc) = setup_range(1); + let bad_name = Name::japanese("正しくない"); + let mut delete = Delete::new(test_doc.get_doc_name()); + let mut qry_calc = Calculation::new(Operand::Equal); + qry_calc.add_value(0).unwrap(); + qry_calc + .add_value(CalcValue::Existing(FieldType::Integer)) + .unwrap(); + delete.get_query_mut().add(bad_name.clone(), qry_calc); + let mut expected = MTTError::new(ErrorID::NameNotFound(bad_name.clone().into())); + expected.add_parent(ErrorID::Field(bad_name.into())); + expected.add_parent(ErrorID::Document(test_doc.get_doc_name().into())); + let result = mtt.records(delete).unwrap_err(); + assert_eq!(result.to_string(), expected.to_string()); +} + +#[test] +fn does_delete_update_indexes() { + let id = "something"; + let mut mtt = MoreThanText::new(); + let test_doc = TestDocument::new(vec![FieldType::StaticString]); + let mut docdef = test_doc.get_docdef(); + docdef.add_index(&test_doc.get_field_name(0), IndexType::Unique); + mtt.create_document(docdef).unwrap(); + test_doc.populate(&mut mtt, vec![id]); + mtt.records(Delete::new(test_doc.get_doc_name())).unwrap(); + let mut add = Addition::new(test_doc.get_doc_name()); + add.add_field(test_doc.get_field_name(0), id); + let result = mtt.records(add).unwrap(); + assert_eq!(result.len(), 1); + let rec = result.iter().last().unwrap(); + assert_eq!(rec.get(test_doc.get_field_name(0)).unwrap(), id.into()); +}