mod support; use morethantext::{ action::{Addition, DocDef, Field, FieldType, Query}, ErrorID, MTTError, MoreThanText, Name, }; use std::collections::HashSet; use support::random_name; use uuid::Uuid; #[test] fn can_new_documents_be_added() { let count = 5; let mut mtt = MoreThanText::new(); let doc_name = random_name(); let field_name = random_name(); let mut data: HashSet = HashSet::new(); for i in 0..count { data.insert(i.into()); } let mut docdef = DocDef::new(doc_name.clone()); docdef.add_field(field_name.clone(), FieldType::Integer); mtt.create_document(docdef); for item in data.iter() { let mut add = Addition::new(doc_name.clone()); add.add_field(field_name.clone(), item.clone()); mtt.records(add).unwrap(); } let qry = Query::new(doc_name.clone()); let recs = mtt.records(qry).unwrap(); assert_eq!(recs.len(), data.len()); for rec in recs.iter() { let result = rec.get(&field_name).unwrap(); assert!( data.contains(&result), "did not find {:?} in {:?}", result, data ); data.remove(&result); } assert_eq!(data.len(), 0, "{:?} did not appear in query", data); } #[test] fn does_it_error_on_a_bad_document_name() { let mut mtt = MoreThanText::new(); let doc_name = Name::english("empty"); let mut expected = MTTError::new(ErrorID::NameNotFound(doc_name.clone().into())); expected.add_parent(ErrorID::Document(doc_name.clone().into())); let add = Addition::new(doc_name.clone()); let result = mtt.records(add).unwrap_err(); assert_eq!(result.to_string(), expected.to_string()); /* let result = mtt .records(add) .unwrap_err() .get_error_ids() .back() .unwrap() .clone(); match result { ErrorID::NameNotFound(_) => {} _ => unreachable!( "got {:?}: should have been document field not found.", result ), } */ }