Updated error to be more expressive.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
This commit is contained in:
67
tests/add_test.rs
Normal file
67
tests/add_test.rs
Normal file
@@ -0,0 +1,67 @@
|
||||
mod support;
|
||||
|
||||
use morethantext::{
|
||||
action::{Addition, DocDef, Field, FieldType, Query},
|
||||
ErrorID, 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]
|
||||
#[ignore = "need to alter error"]
|
||||
fn does_it_error_on_a_bad_field_name() {
|
||||
let mut mtt = MoreThanText::new();
|
||||
let doc_name = Name::english("empty");
|
||||
mtt.create_document(DocDef::new(doc_name.clone()));
|
||||
let mut add = Addition::new(doc_name.clone());
|
||||
add.add_field(Name::english("missing"), "stuff");
|
||||
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
|
||||
),
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,11 @@
|
||||
mod support;
|
||||
|
||||
use morethantext::{action::*, ErrorID, Include, MoreThanText, Name, Path, TestMoreThanText};
|
||||
use std::{
|
||||
sync::mpsc::{channel, RecvTimeoutError},
|
||||
time::Duration,
|
||||
};
|
||||
use support::random_name;
|
||||
use uuid::Uuid;
|
||||
|
||||
pub static TIMEOUT: Duration = Duration::from_millis(500);
|
||||
@@ -14,7 +17,7 @@ fn are_errors_produced_for_duplicate_names() {
|
||||
mtt.create_document(docdef.clone()).unwrap();
|
||||
match mtt.create_document(docdef) {
|
||||
Ok(_) => assert!(false, "should have failed"),
|
||||
Err(err) => match err.error_id() {
|
||||
Err(err) => match err.get_error_ids().back().unwrap() {
|
||||
ErrorID::NameAlreadyExists => {}
|
||||
_ => unreachable!("got {:?}, should be name already exists", err),
|
||||
},
|
||||
@@ -24,7 +27,7 @@ fn are_errors_produced_for_duplicate_names() {
|
||||
#[test]
|
||||
fn does_document_respond_to() {
|
||||
let mut mtt = MoreThanText::new();
|
||||
let doc_name = TestMoreThanText::random_name();
|
||||
let doc_name = random_name();
|
||||
let mut requests: Vec<UserAction> = Vec::new();
|
||||
requests.push(Addition::new(doc_name.clone()).into());
|
||||
requests.push(Delete::new(doc_name.clone()).into());
|
||||
|
||||
6
tests/support.rs
Normal file
6
tests/support.rs
Normal file
@@ -0,0 +1,6 @@
|
||||
use morethantext::Name;
|
||||
use uuid::Uuid;
|
||||
|
||||
pub fn random_name() -> Name {
|
||||
Name::english(Uuid::new_v4().to_string().as_str())
|
||||
}
|
||||
Reference in New Issue
Block a user