2026-03-05 11:13:18 -05:00
|
|
|
use morethantext::{Addition, DocDef, Field, FieldType, MoreThanText, Name, TestMoreThanText};
|
2026-02-25 10:16:50 -05:00
|
|
|
use uuid::Uuid;
|
|
|
|
|
|
|
|
|
|
pub fn random_name() -> Name {
|
|
|
|
|
Name::english(Uuid::new_v4().to_string().as_str())
|
|
|
|
|
}
|
2026-02-27 12:22:57 -05:00
|
|
|
|
2026-03-05 11:13:18 -05:00
|
|
|
pub fn setup_range(count: usize) -> (TestMoreThanText, TestDocument) {
|
|
|
|
|
let test_env = TestMoreThanText::new();
|
|
|
|
|
let mut mtt = test_env.get_morethantext();
|
2026-03-01 13:33:03 -05:00
|
|
|
let test_doc = TestDocument::new(vec![FieldType::Integer]);
|
|
|
|
|
mtt.create_document(test_doc.get_docdef()).unwrap();
|
|
|
|
|
let mut data: Vec<Vec<i128>> = Vec::new();
|
|
|
|
|
for i in 0..count {
|
|
|
|
|
let holder: i128 = i.try_into().unwrap();
|
|
|
|
|
data.push(vec![holder]);
|
|
|
|
|
}
|
2026-03-09 09:01:38 -04:00
|
|
|
test_doc.populate_multiple(mtt.clone(), data);
|
2026-03-05 11:13:18 -05:00
|
|
|
(test_env, test_doc)
|
2026-03-01 13:33:03 -05:00
|
|
|
}
|
|
|
|
|
|
2026-02-27 12:22:57 -05:00
|
|
|
pub struct TestDocument {
|
2026-03-09 09:21:04 -04:00
|
|
|
docdef: DocDef,
|
2026-02-27 12:22:57 -05:00
|
|
|
doc_name: Name,
|
|
|
|
|
field_names: Vec<Name>,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl TestDocument {
|
|
|
|
|
pub fn new(fields: Vec<FieldType>) -> Self {
|
2026-03-09 09:21:04 -04:00
|
|
|
let doc_name = random_name();
|
|
|
|
|
let mut docdef = DocDef::new(doc_name.clone());
|
2026-02-27 12:22:57 -05:00
|
|
|
let mut fnames = Vec::new();
|
|
|
|
|
for i in 0..fields.len() {
|
|
|
|
|
let name = Name::english(format!("field{}", i).as_str());
|
2026-03-09 11:43:05 -04:00
|
|
|
docdef.add_field(vec![name.clone()], fields[i].clone());
|
2026-02-27 12:22:57 -05:00
|
|
|
fnames.push(name);
|
|
|
|
|
}
|
|
|
|
|
Self {
|
2026-03-09 09:21:04 -04:00
|
|
|
docdef: docdef,
|
|
|
|
|
doc_name: doc_name,
|
2026-02-27 12:22:57 -05:00
|
|
|
field_names: fnames,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn get_doc_name(&self) -> &Name {
|
|
|
|
|
&self.doc_name
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn get_docdef(&self) -> DocDef {
|
2026-03-09 09:21:04 -04:00
|
|
|
self.docdef.clone()
|
2026-02-27 12:22:57 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn get_field_name(&self, position: usize) -> Name {
|
|
|
|
|
self.field_names[position].clone()
|
|
|
|
|
}
|
2026-02-28 01:38:49 -05:00
|
|
|
|
2026-03-09 09:01:38 -04:00
|
|
|
pub fn populate<F>(&self, mut mtt: MoreThanText, data: Vec<F>)
|
2026-02-28 15:47:19 -05:00
|
|
|
where
|
|
|
|
|
F: Into<Field> + Clone,
|
|
|
|
|
{
|
2026-02-28 01:38:49 -05:00
|
|
|
let wrapper = vec![data];
|
|
|
|
|
self.populate_multiple(mtt, wrapper);
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-09 09:01:38 -04:00
|
|
|
pub fn populate_multiple<F>(&self, mut mtt: MoreThanText, data: Vec<Vec<F>>)
|
2026-02-28 15:47:19 -05:00
|
|
|
where
|
|
|
|
|
F: Into<Field> + Clone,
|
|
|
|
|
{
|
2026-02-28 01:38:49 -05:00
|
|
|
for rec in data.iter() {
|
|
|
|
|
let mut add = Addition::new(self.doc_name.clone());
|
|
|
|
|
for i in 0..self.field_names.len() {
|
|
|
|
|
let field: Field = rec[i].clone().into();
|
|
|
|
|
add.add_field(self.field_names[i].clone(), field);
|
|
|
|
|
}
|
|
|
|
|
mtt.records(add).unwrap();
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-02-27 12:22:57 -05:00
|
|
|
}
|