diff --git a/tests/support.rs b/tests/support.rs index 7e87a1d..e6a8dd1 100644 --- a/tests/support.rs +++ b/tests/support.rs @@ -1,4 +1,4 @@ -use morethantext::{DocDef, FieldType, Name}; +use morethantext::{Addition, DocDef, Field, FieldType, MoreThanText, Name}; use uuid::Uuid; pub fn random_name() -> Name { @@ -40,4 +40,20 @@ impl TestDocument { pub fn get_field_name(&self, position: usize) -> Name { self.field_names[position].clone() } + + pub fn populate(&self, mtt: &mut MoreThanText, data: Vec) where F: Into + Clone { + let wrapper = vec![data]; + self.populate_multiple(mtt, wrapper); + } + + pub fn populate_multiple(&self, mtt: &mut MoreThanText, data: Vec>) where F: Into + Clone { + 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(); + } + } } diff --git a/tests/support_test.rs b/tests/support_test.rs index 2b1ceb8..c5a327e 100644 --- a/tests/support_test.rs +++ b/tests/support_test.rs @@ -1,6 +1,6 @@ mod support; -use morethantext::{FieldType, Name}; +use morethantext::{Field, FieldType, MoreThanText, Name, Query}; use support::TestDocument; #[test] @@ -29,7 +29,7 @@ fn can_fields_be_created() { let ftypes = [FieldType::Uuid, FieldType::Integer]; for ftype in ftypes.iter() { let mut input = Vec::new(); - for i in 0..count { + for _ in 0..count { input.push(ftype.clone()); } let test_doc = TestDocument::new(input); @@ -54,3 +54,45 @@ fn can_field_types_be_varied() { .unwrap(); } } + +#[test] +fn can_record_be_added_to_document() { + let count = 5; + let mut mtt = MoreThanText::new(); + let mut fields: Vec = Vec::new(); + let mut input: Vec = Vec::new(); + for i in 0..count { + fields.push(FieldType::StaticString); + input.push(i.to_string()); + } + let test_doc = TestDocument::new(fields); + mtt.create_document(test_doc.get_docdef()); + test_doc.populate(&mut mtt, input); + let query = Query::new(test_doc.get_doc_name()); + let results = mtt.records(query).unwrap(); + assert_eq!(results.len(), 1); + for rec in results.iter() { + for i in 0..count { + let field = rec.get(test_doc.get_field_name(i)).unwrap(); + assert_eq!(field, i.to_string().into()); + } + } +} + +#[test] +fn can_document_be_populated_with_multiple_records() { + let count = 5; + let mut mtt = MoreThanText::new(); + let test_doc = TestDocument::new(vec![FieldType::Integer]); + mtt.create_document(test_doc.get_docdef()); + let mut data: Vec> = Vec::new(); + for i in 0..count { + let item: i128 = i.try_into().unwrap(); + let holder: Vec = vec![item]; + data.push(holder); + } + test_doc.populate_multiple(&mut mtt, data); + let query = Query::new(test_doc.get_doc_name()); + let results = mtt.records(query).unwrap(); + assert_eq!(results.len(), count); +}