pub mod controller;
pub mod error;
pub mod model;
pub mod process;
pub mod worker;
#[cfg(test)]
mod tests {
use crate::model::{Model, Rule};
use std::fs;
#[test]
fn test_create_and_read_item() {
let mut model = Model::new();
let item_name = "TestItem";
let rules = vec![Rule {
path: "/path/to/some/process".to_string(),
}];
let state = true;
let cloned_rules = rules.to_vec();
model
.create_item(item_name.to_string(), cloned_rules, state)
.unwrap();
let item = model.read_item(item_name).unwrap();
assert_eq!(item.name, item_name);
assert_eq!(item.rules.to_vec(), rules.to_vec());
assert_eq!(item.state, state);
}
#[test]
fn test_update_item() {
let mut model = Model::new();
let item_name = "TestItem";
let rules = vec![Rule {
path: "/path/to/some/process".to_string(),
}];
let state = true;
model
.create_item(item_name.to_string(), rules, state)
.unwrap();
let new_rules = vec![Rule {
path: "/path/to/another/process".to_string(),
}];
let new_state = false;
model
.update_item(item_name, new_rules.clone(), new_state)
.unwrap();
let updated_item = model.read_item(item_name).unwrap();
assert_eq!(updated_item.name, item_name);
assert_eq!(updated_item.rules, new_rules);
assert_eq!(updated_item.state, new_state);
}
#[test]
fn test_delete_item() {
let mut model = Model::new();
let item_name = "TestItem";
let rules = vec![Rule {
path: "/path/to/some/process".to_string(),
}];
let state = true;
model
.create_item(item_name.to_string(), rules, state)
.unwrap();
model.delete_item(item_name).unwrap();
assert!(model.read_item(item_name).is_none());
}
#[test]
fn test_save_and_load_model() {
let mut model = Model::new();
let item_name = "TestItem";
let rules = vec![Rule {
path: "/path/to/some/process".to_string(),
}];
let state = true;
model
.create_item(item_name.to_string(), rules.clone(), state)
.unwrap();
model.save().unwrap();
let mut loaded_model = Model::new();
loaded_model.load().unwrap();
let loaded_item = loaded_model.read_item(item_name).unwrap();
assert_eq!(loaded_item.name, item_name);
assert_eq!(loaded_item.rules, rules);
assert_eq!(loaded_item.state, state);
fs::remove_file("config.json").unwrap();
}
}