Moved on_query test to lib testing.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
2026-03-05 11:13:18 -05:00
parent bb47a7af31
commit 50962e2b68
8 changed files with 111 additions and 42 deletions

View File

@@ -27,7 +27,8 @@ fn can_delete() {
#[test]
fn can_delete_specific() {
let selected = 1;
let (mut mtt, test_doc) = setup_range(3);
let (test_env, test_doc) = setup_range(3);
let mut mtt = test_env.get_morethantext();
let mut calc = Calculation::new(Operand::Equal);
calc.add_value(selected.clone()).unwrap();
calc.add_value(CalcValue::Existing(FieldType::Integer))
@@ -65,7 +66,8 @@ fn can_delete_multiple() {
let count: i128 = 5;
let selected: i128 = 2; // must be less than count and not less than 0
let bound = selected + 1;
let (mut mtt, test_doc) = setup_range(count.clone().try_into().unwrap());
let (test_env, test_doc) = setup_range(count.clone().try_into().unwrap());
let mut mtt = test_env.get_morethantext();
let mut calc = Calculation::new(Operand::GreaterThan);
calc.add_value(CalcValue::Existing(FieldType::Integer))
.unwrap();
@@ -106,7 +108,8 @@ fn can_delete_multiple() {
#[test]
fn does_delete_error_on_a_bad_query() {
let (mut mtt, test_doc) = setup_range(1);
let (test_env, test_doc) = setup_range(1);
let mut mtt = test_env.get_morethantext();
let bad_name = Name::japanese("正しくない");
let mut delete = Delete::new(test_doc.get_doc_name());
let mut qry_calc = Calculation::new(Operand::Equal);

View File

@@ -43,7 +43,8 @@ fn does_document_respond_to() {
#[test]
fn does_document_ignore_other_document_requests() {
let mut mtt = TestMoreThanText::new();
let mut test_env = TestMoreThanText::new();
let mut mtt = test_env.get_morethantext();
let quiet = Name::english("quiet");
let alt = Name::english("alt");
mtt.create_document(DocDef::new(quiet.clone())).unwrap();
@@ -53,7 +54,7 @@ fn does_document_ignore_other_document_requests() {
Include::Just(quiet.clone().into()),
Include::All,
)];
let rx = mtt.register_channel(paths);
test_env.register_channel(paths);
let mut requests: Vec<UserAction> = Vec::new();
requests.push(Addition::new(alt.clone()).into());
requests.push(Delete::new(alt.clone()).into());
@@ -62,7 +63,7 @@ fn does_document_ignore_other_document_requests() {
for req in requests.iter() {
mtt.records(req.clone()).unwrap();
}
match rx.recv_timeout(TIMEOUT) {
match test_env.recv() {
Ok(msg) => unreachable!("got {:?} should have timed out", msg),
Err(err) => match err {
RecvTimeoutError::Timeout => {}

View File

@@ -1,8 +1,8 @@
mod support;
use morethantext::{
CalcValue, Calculation, DocDef, ErrorID, Field, FieldType, IndexType, MTTError, MoreThanText,
Name, Operand, Query,
Action, CalcValue, Calculation, DocDef, ErrorID, Field, FieldType, Include, IndexType,
MTTError, MoreThanText, Name, Operand, Path, Query, TestMoreThanText,
};
use std::collections::HashSet;
use support::{setup_range, TestDocument};
@@ -11,7 +11,8 @@ const COUNT: usize = 5;
#[test]
fn does_empty_query_get_all_documents() {
let (mut mtt, test_doc) = setup_range(COUNT);
let (test_env, test_doc) = setup_range(COUNT);
let mut mtt = test_env.get_morethantext();
let mut query = Query::new(test_doc.get_doc_name());
let result = mtt.records(query).unwrap();
assert_eq!(result.len(), 5, "got {:?}", result);
@@ -29,7 +30,8 @@ fn does_empty_query_get_all_documents() {
#[test]
fn does_query_pull_specific_information() {
let (mut mtt, test_doc) = setup_range(COUNT);
let (test_env, test_doc) = setup_range(COUNT);
let mut mtt = test_env.get_morethantext();
let expected = 3;
let mut calc = Calculation::new(Operand::Equal);
calc.add_value(expected.clone()).unwrap();
@@ -48,7 +50,8 @@ fn does_query_pull_specific_information() {
#[test]
fn does_query_work_with_less_than() {
let (mut mtt, test_doc) = setup_range(COUNT);
let (test_env, test_doc) = setup_range(COUNT);
let mut mtt = test_env.get_morethantext();
let expected = 2;
let mut calc = Calculation::new(Operand::LessThan);
calc.add_value(expected.clone()).unwrap();
@@ -72,7 +75,8 @@ fn does_query_work_with_less_than() {
#[test]
fn does_query_work_with_less_than_equal() {
let (mut mtt, test_doc) = setup_range(COUNT);
let (test_env, test_doc) = setup_range(COUNT);
let mut mtt = test_env.get_morethantext();
let expected = 2;
let mut calc = Calculation::new(Operand::LessThanEqual);
calc.add_value(expected.clone()).unwrap();
@@ -96,7 +100,8 @@ fn does_query_work_with_less_than_equal() {
#[test]
fn does_query_work_with_greater_than() {
let (mut mtt, test_doc) = setup_range(COUNT);
let (test_env, test_doc) = setup_range(COUNT);
let mut mtt = test_env.get_morethantext();
let expected = 2;
let mut calc = Calculation::new(Operand::GreaterThan);
calc.add_value(expected.clone()).unwrap();
@@ -119,7 +124,8 @@ fn does_query_work_with_greater_than() {
#[test]
fn does_query_work_with_greater_than_equal() {
let (mut mtt, test_doc) = setup_range(COUNT);
let (test_env, test_doc) = setup_range(COUNT);
let mut mtt = test_env.get_morethantext();
let expected = 2;
let mut calc = Calculation::new(Operand::GreaterThanEqual);
calc.add_value(expected.clone()).unwrap();
@@ -284,3 +290,38 @@ fn does_it_error_on_bad_field_type() {
let result = mtt.records(qry).unwrap_err();
assert_eq!(result.to_string(), expected.to_string());
}
#[test]
fn does_query_send_on_query_message() {
let selected = 2;
let (mut test_env, test_doc) = setup_range(3);
let mut mtt = test_env.get_morethantext();
test_env.register_channel(vec![Path::new(
Include::All,
Include::Just(test_doc.get_doc_name().into()),
Include::Just(Action::OnQuery),
)]);
let mut calc = Calculation::new(Operand::Equal);
calc.add_value(selected.clone()).unwrap();
calc.add_value(CalcValue::Existing(FieldType::Integer))
.unwrap();
let mut qry = Query::new(test_doc.get_doc_name());
qry.add(test_doc.get_field_name(0), calc);
let query_result = mtt.records(qry).unwrap();
let trigger_result = test_env.get_trigger_records(Action::OnQuery);
assert_eq!(trigger_result.len(), query_result.len());
assert_eq!(
trigger_result
.iter()
.last()
.unwrap()
.get(test_doc.get_field_name(0))
.unwrap(),
query_result
.iter()
.last()
.unwrap()
.get(test_doc.get_field_name(0))
.unwrap()
);
}

View File

@@ -112,7 +112,8 @@ fn does_expire_update_on_query() {
#[test]
#[ignore = "failing to update"]
fn are_expired_sessions_removed() {
let mut mtt = TestMoreThanText::new();
let test_env = TestMoreThanText::new();
let mut mtt = test_env.get_morethantext();
let id = mtt.validate_session(None);
let mut update = Update::new(doc_name());
let mut calc = Calculation::new(Operand::Equal);
@@ -127,7 +128,7 @@ fn are_expired_sessions_removed() {
.get_values_mut()
.add_field(Name::english("expire"), expire);
mtt.records(update).unwrap();
mtt.send_time_pulse();
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();

View File

@@ -1,12 +1,13 @@
use morethantext::{Addition, DocDef, Field, FieldType, MoreThanText, Name};
use morethantext::{Addition, DocDef, Field, FieldType, MoreThanText, Name, TestMoreThanText};
use uuid::Uuid;
pub fn random_name() -> Name {
Name::english(Uuid::new_v4().to_string().as_str())
}
pub fn setup_range(count: usize) -> (MoreThanText, TestDocument) {
let mut mtt = MoreThanText::new();
pub fn setup_range(count: usize) -> (TestMoreThanText, TestDocument) {
let test_env = TestMoreThanText::new();
let mut mtt = test_env.get_morethantext();
let test_doc = TestDocument::new(vec![FieldType::Integer]);
mtt.create_document(test_doc.get_docdef()).unwrap();
let mut data: Vec<Vec<i128>> = Vec::new();
@@ -15,7 +16,7 @@ pub fn setup_range(count: usize) -> (MoreThanText, TestDocument) {
data.push(vec![holder]);
}
test_doc.populate_multiple(&mut mtt, data);
(mtt, test_doc)
(test_env, test_doc)
}
pub struct TestDocument {

View File

@@ -12,7 +12,8 @@ use uuid::Uuid;
fn is_it_possible_to_update_nothing() {
let count = 3;
let outside: i128 = (count + 2).try_into().unwrap();
let (mut mtt, test_doc) = setup_range(count);
let (test_env, test_doc) = setup_range(count);
let mut mtt = test_env.get_morethantext();
let mut update = Update::new(test_doc.get_doc_name());
update.add_field(test_doc.get_field_name(0), 20);
let mut calc = Calculation::new(Operand::Equal);
@@ -60,7 +61,8 @@ fn are_the_updates_limited_to_the_queried() {
let count = 3;
let choice = 1;
let changed = 20;
let (mut mtt, test_doc) = setup_range(count);
let (test_env, test_doc) = setup_range(count);
let mut mtt = test_env.get_morethantext();
let mut update = Update::new(test_doc.get_doc_name());
update.add_field(test_doc.get_field_name(0), changed.clone());
let mut calc = Calculation::new(Operand::Equal);
@@ -94,7 +96,8 @@ fn are_the_updates_limited_to_the_queried() {
fn can_multiple_documents_be_update() {
let count = 3;
let choice = 1;
let (mut mtt, test_doc) = setup_range(count);
let (test_env, test_doc) = setup_range(count);
let mut mtt = test_env.get_morethantext();
let mut add_up = Calculation::new(Operand::Add);
add_up
.add_value(CalcValue::Existing(FieldType::Integer))
@@ -132,7 +135,8 @@ fn can_multiple_documents_be_update() {
#[test]
fn does_update_error_on_a_bad_query() {
let (mut mtt, test_doc) = setup_range(1);
let (test_env, test_doc) = setup_range(1);
let mut mtt = test_env.get_morethantext();
let bad_name = Name::japanese("正しくない");
let mut update = Update::new(test_doc.get_doc_name());
let mut qry_calc = Calculation::new(Operand::Equal);
@@ -151,7 +155,8 @@ fn does_update_error_on_a_bad_query() {
#[test]
fn does_update_error_on_a_bad_field_name() {
let (mut mtt, test_doc) = setup_range(1);
let (test_env, test_doc) = setup_range(1);
let mut mtt = test_env.get_morethantext();
let bad_name = Name::japanese("正しくない");
let mut update = Update::new(test_doc.get_doc_name());
let mut qry_calc = Calculation::new(Operand::Equal);
@@ -172,7 +177,8 @@ fn does_update_error_on_a_bad_field_name() {
#[test]
fn does_update_error_on_a_bad_field_type() {
let (mut mtt, test_doc) = setup_range(1);
let (test_env, test_doc) = setup_range(1);
let mut mtt = test_env.get_morethantext();
let mut update = Update::new(test_doc.get_doc_name());
let mut qry_calc = Calculation::new(Operand::Equal);
qry_calc.add_value(0).unwrap();