Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
88 lines
3.1 KiB
Rust
88 lines
3.1 KiB
Rust
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<Field> = 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());
|
|
}
|
|
|
|
#[test]
|
|
fn does_it_error_on_bad_field_name() {
|
|
let mut mtt = MoreThanText::new();
|
|
let doc_name = Name::english("holder");
|
|
let field_name = Name::english("missing");
|
|
let docdef = DocDef::new(doc_name.clone());
|
|
mtt.create_document(docdef);
|
|
let mut add = Addition::new(doc_name.clone());
|
|
add.add_field(field_name.clone(), "something");
|
|
let mut expected = MTTError::new(ErrorID::NameNotFound(field_name.clone().into()));
|
|
expected.add_parent(ErrorID::Field(field_name.clone().into()));
|
|
expected.add_parent(ErrorID::Document(doc_name.clone().into()));
|
|
let result = mtt.records(add).unwrap_err();
|
|
assert_eq!(result.to_string(), expected.to_string());
|
|
}
|
|
|
|
#[test]
|
|
fn does_it_error_on_bad_field_type() {
|
|
let mut mtt = MoreThanText::new();
|
|
let doc_name = Name::english("holder");
|
|
let field_name = Name::english("wrong");
|
|
let mut docdef = DocDef::new(doc_name.clone());
|
|
docdef.add_field(field_name.clone(), FieldType::Uuid);
|
|
mtt.create_document(docdef);
|
|
let mut add = Addition::new(doc_name.clone());
|
|
add.add_field(field_name.clone(), "something");
|
|
let mut expected = MTTError::new(ErrorID::FieldTypeExpected(FieldType::Uuid));
|
|
expected.add_parent(ErrorID::Field(field_name.clone().into()));
|
|
expected.add_parent(ErrorID::Document(doc_name.clone().into()));
|
|
let result = mtt.records(add).unwrap_err();
|
|
assert_eq!(result.to_string(), expected.to_string());
|
|
}
|