diff --git a/01.workspace/heave/src/tst/intended_use.rs b/01.workspace/heave/src/tst/intended_use.rs deleted file mode 100644 index f3e02a9..0000000 --- a/01.workspace/heave/src/tst/intended_use.rs +++ /dev/null @@ -1,68 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::*; - #[derive(Clone, Debug, PartialEq)] - struct Product { - id: String, - name: String, - model: Option, - price: u64, - in_stock: bool, - } - impl EAV for Product { - fn class() -> &'static str { - "product" - } - } - impl From for Product { - fn from(entity: Entity) -> Self { - Product { - id: entity.id.clone(), - name: entity.unwrap("name"), - model: entity.unwrap_opt("model"), - price: entity.unwrap_or("price", 0), - in_stock: entity.unwrap("in_stock"), - } - } - } - impl From for Entity { - fn from(value: Product) -> Self { - Entity::new::() - .with_id(&value.id) - .with_attribute("name", value.name) - .with_attribute("price", value.price) - .with_attribute("in_stock", value.in_stock) - .with_opt_attribute("model", value.model) - } - } - #[test] - /// # Example 1 - /// - /// - How to create a new empty catalog - /// - How to insert a new entity - /// - How to read the entity by id - fn scenario_001() { - // create a new named temp file - let tempfile = tempfile::NamedTempFile::new().unwrap(); - let path = tempfile.path(); - let path = path.to_str().unwrap(); - // initialize a new empty catalog given an existing path - let mut catalog = Catalog::new(path); - // create a new object - let product = Product { - id: short_uuid::short!().to_string(), - name: String::from("PenguinX Laptop"), - model: None, - price: 135000, - in_stock: true, - }; - // save some info for late comparison - let original_product = product.clone(); - // insert the new object into catalog consuming it - catalog.upsert(product); - // read value from catalog using the original key - let read_product = catalog.get::(&original_product.id).unwrap(); - // assert equality between original and read - assert_eq!(original_product, read_product); - } -} diff --git a/01.workspace/heave/src/tst/mod.rs b/01.workspace/heave/src/tst/mod.rs index dd981bb..8b13789 100644 --- a/01.workspace/heave/src/tst/mod.rs +++ b/01.workspace/heave/src/tst/mod.rs @@ -1,2 +1 @@ -pub mod intended_use; -pub mod rusty_budger_use; + diff --git a/01.workspace/heave/src/tst/rusty_budger_use.rs b/01.workspace/heave/src/tst/rusty_budger_use.rs deleted file mode 100644 index 2c2b7d3..0000000 --- a/01.workspace/heave/src/tst/rusty_budger_use.rs +++ /dev/null @@ -1,135 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::*; - use category::*; - use operation::*; - use relation::*; - pub mod relation { - use super::*; - pub struct OperationToCategory { - pub id: String, - pub operation_id: String, - pub category_id: String, - } - impl EAV for OperationToCategory { - fn class() -> &'static str { - "operation_to_category" - } - } - impl From for Entity { - fn from(value: OperationToCategory) -> Entity { - Entity::new::() - .with_id(&value.id) - .with_attribute("operation_id", value.operation_id) - .with_attribute("category_id", value.category_id) - } - } - impl From for OperationToCategory { - fn from(entity: Entity) -> Self { - OperationToCategory { - id: entity.id.clone(), - operation_id: entity.unwrap("operation_id"), - category_id: entity.unwrap("category_id"), - } - } - } - } - pub mod category { - use super::*; - pub struct Category { - pub id: String, - pub label: String, - } - impl EAV for Category { - fn class() -> &'static str { - "category" - } - } - impl From for Entity { - fn from(value: Category) -> Entity { - Entity::new::() - .with_id(&value.id) - .with_attribute("label", value.label) - } - } - impl From for Category { - fn from(entity: Entity) -> Self { - Category { - id: entity.id.clone(), - label: entity.unwrap("label"), - } - } - } - } - pub mod operation { - use super::*; - pub struct Operation { - pub id: String, - pub date: u64, - pub amount: i64, - pub description: String, - } - impl EAV for Operation { - fn class() -> &'static str { - "operation" - } - } - impl From for Entity { - fn from(value: Operation) -> Entity { - Entity::new::() - .with_id(&value.id) - .with_attribute("date", value.date) - .with_attribute("amount", value.amount) - .with_attribute("description", value.description) - } - } - impl From for Operation { - fn from(entity: Entity) -> Self { - Operation { - id: entity.id.clone(), - date: entity.unwrap("date"), - amount: entity.unwrap("amount"), - description: entity.unwrap("description"), - } - } - } - } - #[test] - pub fn check_001() { - let file = "./rustybudger.sqlite3"; - // clean filesystem - if let Ok(true) = std::fs::exists(file) { - let _ = std::fs::remove_file(file); - } - let mut catalog = Catalog::new(file); - let operation_01 = Operation { - id: short_uuid::short!().to_string(), - date: 20250929, - amount: -10000, - description: "operation 1".to_string(), - }; - let operation_02 = Operation { - id: short_uuid::short!().to_string(), - date: 20250930, - amount: -20000, - description: "operation 2".to_string(), - }; - let category_01 = Category { - id: short_uuid::short!().to_string(), - label: "Need".to_string(), - }; - let relation_01 = OperationToCategory { - id: short_uuid::short!().to_string(), - operation_id: operation_01.id.clone(), - category_id: category_01.id.clone(), - }; - let operations = vec![operation_01, operation_02]; - let categories = vec![category_01]; - let relations = vec![relation_01]; - catalog.insert_many(operations); - catalog.insert_many(categories); - catalog.insert_many(relations); - let result = catalog.persist(); - assert!(result.is_ok()); - } -}