From c7054e4306c4677d1785d9425deac4615dc62331 Mon Sep 17 00:00:00 2001 From: Jeff Baskin Date: Sun, 8 Mar 2026 16:02:08 -0400 Subject: [PATCH] Fixed the ignored session tests. --- src/document/session.rs | 2 +- tests/session_test.rs | 38 +++++++++++++++++++++++--------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/document/session.rs b/src/document/session.rs index 1344da3..04812e2 100644 --- a/src/document/session.rs +++ b/src/document/session.rs @@ -55,10 +55,10 @@ impl Session { let mut delete = Delete::new(Session::doc_names()[0].clone()); let delete_qry = delete.get_query_mut(); let mut delete_calc = Calculation::new(Operand::LessThan); - delete_calc.add_value(FieldType::DateTime).unwrap(); delete_calc .add_value(CalcValue::Existing(FieldType::DateTime)) .unwrap(); + delete_calc.add_value(FieldType::DateTime).unwrap(); delete_qry.add(name_expire.clone(), delete_calc); let delete_func = DocFuncType::Trigger(delete.into()); docdef.add_route(Clock::get_path(), delete_func); diff --git a/tests/session_test.rs b/tests/session_test.rs index bfbdd3e..d77d787 100644 --- a/tests/session_test.rs +++ b/tests/session_test.rs @@ -1,7 +1,7 @@ use chrono::{DateTime, Utc}; use morethantext::{ action::{Addition, CalcValue, Calculation, Field, FieldType, Operand, Query, Record}, - MTTError, MoreThanText, Name, TestMoreThanText, Update, + Action, ErrorID, Include, MTTError, MoreThanText, Name, Path, TestMoreThanText, Update, }; use std::time::Duration; use uuid::Uuid; @@ -77,17 +77,18 @@ fn is_expiration_date_set_in_the_future() { } #[test] -#[ignore = "hangs without completing"] fn are_session_ids_unique_on_update() { let mut mtt = MoreThanText::new(); + let id_name = Name::english("id"); let id = mtt.validate_session(None); let mut addition = Addition::new(doc_name()); - addition.add_field(Name::english("id"), id); + addition.add_field(id_name.clone(), id); + let mut error = MTTError::new(ErrorID::IndexEntryAlreadyExists(id.into())); + error.add_parent(ErrorID::Field(id_name.into())); + error.add_parent(ErrorID::Document(Name::english("session").into())); match mtt.records(addition) { Ok(data) => unreachable!("got {:?} should have been error", data), - Err(err) => match err { - _ => unreachable!("got {:?}, should have been not unique", err), - }, + Err(err) => assert_eq!(err.to_string(), error.to_string()), } } @@ -110,27 +111,34 @@ fn does_expire_update_on_query() { } #[test] -#[ignore = "failing to update"] fn are_expired_sessions_removed() { - let test_env = TestMoreThanText::new(); + let id_name = Name::english("id"); + let mut test_env = TestMoreThanText::new(); let mut mtt = test_env.get_morethantext(); + for _ in 0..5 { + mtt.validate_session(None); + } let id = mtt.validate_session(None); let mut update = Update::new(doc_name()); let mut calc = Calculation::new(Operand::Equal); calc.add_value(CalcValue::Existing(FieldType::Uuid)) .unwrap(); calc.add_value(id.clone()).unwrap(); - update - .get_query_mut() - .add(Name::english("id"), calc.clone()); + update.get_query_mut().add(id_name.clone(), calc.clone()); let expire = Utc::now() - Duration::from_secs(10); update .get_values_mut() .add_field(Name::english("expire"), expire); mtt.records(update).unwrap(); + let path = Path::new( + Include::All, + Include::Just(doc_name().into()), + Include::Just(Action::OnDelete), + ); + test_env.register_channel(vec![path]); test_env.send_time_pulse(); - let mut qry = Query::new(doc_name()); - qry.add(Name::english("id"), calc.clone()); - let result = mtt.records(qry).unwrap(); - assert_eq!(result.len(), 0); + let result = test_env.get_trigger_records(Action::OnDelete); + assert_eq!(result.len(), 1, "incorrect number of records"); + let rec = result.iter().last().unwrap(); + assert_eq!(rec.get(id_name).unwrap(), id.into()); }