From b96bbbe21d980d209a3e0a6a20daf84b3242ff9e Mon Sep 17 00:00:00 2001 From: Jeff Baskin Date: Sun, 8 Mar 2026 17:05:47 -0400 Subject: [PATCH] Corrected trigger tests. --- tests/session_test.rs | 33 ++++++++++------- tests/trigger_test.rs | 84 ++++++++++++++++++++++++------------------- 2 files changed, 67 insertions(+), 50 deletions(-) diff --git a/tests/session_test.rs b/tests/session_test.rs index d77d787..bc359fa 100644 --- a/tests/session_test.rs +++ b/tests/session_test.rs @@ -93,21 +93,28 @@ fn are_session_ids_unique_on_update() { } #[test] -fn does_expire_update_on_query() { - let mut mtt = MoreThanText::new(); +fn does_expire_updates_on_query() { + let id_name = Name::english("id"); + let expire_name = Name::english("expire"); + let mut test_env = TestMoreThanText::new(); + let mut mtt = test_env.get_morethantext(); let id = mtt.validate_session(None); - let start_time = Utc::now() + Duration::from_secs(3600); + let path = Path::new( + Include::All, + Include::Just(doc_name().into()), + Include::Just(Action::OnUpdate), + ); + test_env.register_channel(vec![path]); + let start_time: Field = (Utc::now() + Duration::from_secs(3600)).into(); mtt.validate_session(Some(id.to_string())); - let end_time = Utc::now() + Duration::from_secs(3601); - let rec = get_session(&mut mtt, &id).unwrap(); - let holder = rec.get(Name::english("expire")).unwrap(); - match holder { - Field::DateTime(data) => { - assert!(data > start_time, "expire should be after {:?}", start_time); - assert!(data < end_time, "expire should be before {:?}", end_time); - } - _ => unreachable!("got {:?} should have been date time", holder), - } + let end_time: Field = (Utc::now() + Duration::from_secs(3601)).into(); + let result = test_env.get_trigger_records(Action::OnUpdate); + assert_eq!(result.len(), 1); + let rec = result.iter().last().unwrap(); + assert_eq!(rec.get(&id_name).unwrap(), id.into()); + let data = rec.get(&expire_name).unwrap(); + assert!(data > start_time, "expire should be after {:?}", start_time); + assert!(data < end_time, "expire should be before {:?}", end_time); } #[test] diff --git a/tests/trigger_test.rs b/tests/trigger_test.rs index 51241e0..b72889e 100644 --- a/tests/trigger_test.rs +++ b/tests/trigger_test.rs @@ -11,7 +11,8 @@ fn can_a_trigger_cause_an_update() { let data0 = 0; let data1 = 0; let data1_expected = 1; - let mut mtt = MoreThanText::new(); + let mut test_env = TestMoreThanText::new(); + let mut mtt = test_env.get_morethantext(); let test_doc = TestDocument::new(vec![FieldType::Integer, FieldType::Integer]); let mut calc = Calculation::new(Operand::Add); calc.add_value(CalcValue::Existing(FieldType::Integer)) @@ -29,6 +30,12 @@ fn can_a_trigger_cause_an_update() { docdef.add_route(path, function); mtt.create_document(docdef); test_doc.populate(&mut mtt, vec![data0.clone(), data1.clone()]); + let path = Path::new( + Include::All, + Include::Just(test_doc.get_doc_name().into()), + Include::Just(Action::OnUpdate), + ); + test_env.register_channel(vec![path]); let first_qry = mtt.records(Query::new(test_doc.get_doc_name())).unwrap(); assert_eq!(first_qry.len(), 1); let first_rec = first_qry.iter().last().unwrap(); @@ -40,17 +47,16 @@ fn can_a_trigger_cause_an_update() { first_rec.get(test_doc.get_field_name(1)).unwrap(), data1.clone().into() ); - let second_qry = mtt.records(Query::new(test_doc.get_doc_name())).unwrap(); - assert_eq!(second_qry.len(), 1); - let second_rec = second_qry.iter().last().unwrap(); + let result = test_env.get_trigger_records(Action::OnUpdate); + assert_eq!(result.len(), 1); + let rec = result.iter().last().unwrap(); assert_eq!( - second_rec.get(test_doc.get_field_name(0)).unwrap(), + rec.get(test_doc.get_field_name(0)).unwrap(), data0.clone().into() ); assert_eq!( - second_rec.get(test_doc.get_field_name(1)).unwrap(), - data1_expected.clone().into(), - "not updated" + rec.get(test_doc.get_field_name(1)).unwrap(), + data1_expected.clone().into() ); } @@ -64,7 +70,8 @@ fn can_trigger_update_specific_record() { for i in 0..count { input.push(vec![i.clone(), initial_data.clone()]); } - let mut mtt = MoreThanText::new(); + let mut test_env = TestMoreThanText::new(); + let mut mtt = test_env.get_morethantext(); let test_doc = TestDocument::new(vec![FieldType::Integer, FieldType::Integer]); let mut calc = Calculation::new(Operand::Add); calc.add_value(CalcValue::Existing(FieldType::Integer)) @@ -89,6 +96,12 @@ fn can_trigger_update_specific_record() { qry_calc.add_value(selected.clone()).unwrap(); let mut qry = Query::new(test_doc.get_doc_name()); qry.add(test_doc.get_field_name(0), qry_calc); + let path = Path::new( + Include::All, + Include::Just(test_doc.get_doc_name().into()), + Include::Just(Action::OnUpdate), + ); + test_env.register_channel(vec![path]); let first_result = mtt.records(qry).unwrap(); assert_eq!(first_result.len(), 1); let first_rec = first_result.iter().last().unwrap(); @@ -100,21 +113,17 @@ fn can_trigger_update_specific_record() { first_rec.get(test_doc.get_field_name(1)).unwrap(), initial_data.clone().into() ); - let second_result = mtt.records(Query::new(test_doc.get_doc_name())).unwrap(); - assert_eq!(second_result.len(), count.try_into().unwrap()); - for rec in second_result.iter() { - if rec.get(test_doc.get_field_name(0)).unwrap() == selected.clone().into() { - assert_eq!( - rec.get(test_doc.get_field_name(1)).unwrap(), - expected.clone().into() - ); - } else { - assert_eq!( - rec.get(test_doc.get_field_name(1)).unwrap(), - initial_data.clone().into() - ); - } - } + let result = test_env.get_trigger_records(Action::OnUpdate); + assert_eq!(result.len(), 1); + let rec = result.iter().last().unwrap(); + assert_eq!( + rec.get(test_doc.get_field_name(0)).unwrap(), + selected.clone().into() + ); + assert_eq!( + rec.get(test_doc.get_field_name(1)).unwrap(), + expected.clone().into() + ); } #[test] @@ -125,7 +134,7 @@ fn can_a_trigger_from_another_document_be_used() { for i in 0..count { input.push(vec![i]); } - let test_env = TestMoreThanText::new(); + let mut test_env = TestMoreThanText::new(); let mut mtt = test_env.get_morethantext(); let test_doc = TestDocument::new(vec![FieldType::Integer]); let mut calc = Calculation::new(Operand::Equal); @@ -144,17 +153,18 @@ fn can_a_trigger_from_another_document_be_used() { docdef.add_route(path, function); mtt.create_document(docdef); test_doc.populate_multiple(&mut mtt, input); - test_env.send_time_pulse(); - let result = mtt.records(Query::new(test_doc.get_doc_name())).unwrap(); - assert_eq!( - result.len(), - (count - 1).try_into().unwrap(), - "wrong number of records" + let path = Path::new( + Include::All, + Include::Just(test_doc.get_doc_name().into()), + Include::Just(Action::OnDelete), + ); + test_env.register_channel(vec![path]); + test_env.send_time_pulse(); + let result = test_env.get_trigger_records(Action::OnDelete); + assert_eq!(result.len(), 1); + let rec = result.iter().last().unwrap(); + assert_eq!( + rec.get(test_doc.get_field_name(0)).unwrap(), + selected.into() ); - for rec in result.iter() { - assert!( - rec.get(test_doc.get_field_name(0)).unwrap() != selected.clone().into(), - "did not remove selected" - ); - } }