chore: delete test scenarios used during initial implementation
This commit is contained in:
@@ -1,68 +0,0 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::*;
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
struct Product {
|
||||
id: String,
|
||||
name: String,
|
||||
model: Option<String>,
|
||||
price: u64,
|
||||
in_stock: bool,
|
||||
}
|
||||
impl EAV for Product {
|
||||
fn class() -> &'static str {
|
||||
"product"
|
||||
}
|
||||
}
|
||||
impl From<Entity> 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<Product> for Entity {
|
||||
fn from(value: Product) -> Self {
|
||||
Entity::new::<Product>()
|
||||
.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::<Product>(&original_product.id).unwrap();
|
||||
// assert equality between original and read
|
||||
assert_eq!(original_product, read_product);
|
||||
}
|
||||
}
|
||||
@@ -1,2 +1 @@
|
||||
pub mod intended_use;
|
||||
pub mod rusty_budger_use;
|
||||
|
||||
|
||||
@@ -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<OperationToCategory> for Entity {
|
||||
fn from(value: OperationToCategory) -> Entity {
|
||||
Entity::new::<OperationToCategory>()
|
||||
.with_id(&value.id)
|
||||
.with_attribute("operation_id", value.operation_id)
|
||||
.with_attribute("category_id", value.category_id)
|
||||
}
|
||||
}
|
||||
impl From<Entity> 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<Category> for Entity {
|
||||
fn from(value: Category) -> Entity {
|
||||
Entity::new::<Category>()
|
||||
.with_id(&value.id)
|
||||
.with_attribute("label", value.label)
|
||||
}
|
||||
}
|
||||
impl From<Entity> 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<Operation> for Entity {
|
||||
fn from(value: Operation) -> Entity {
|
||||
Entity::new::<Operation>()
|
||||
.with_id(&value.id)
|
||||
.with_attribute("date", value.date)
|
||||
.with_attribute("amount", value.amount)
|
||||
.with_attribute("description", value.description)
|
||||
}
|
||||
}
|
||||
impl From<Entity> 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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user