#[cfg(test)]
pub mod tests {
use crate::objects::entity::{EntityValue, ToggleValue};
use crate::objects::property::{PropertyScope, PropertyType};
use crate::persistence::project::Project;
use crate::tests::{new_blueprint, new_entity, new_property};
use std::collections::HashSet;
#[test]
pub fn property_type_fetching() -> Result<(), Box<dyn std::error::Error>> {
let project = Project::open_in_memory()?;
let blueprint = new_blueprint(&project);
let entity = new_entity(&project, HashSet::from([&blueprint]));
for scope in [
PropertyScope::Blueprint(blueprint.clone()),
PropertyScope::Entity(entity.clone()),
] {
let property = new_property(&project, scope.clone(), PropertyType::Toggle, None, None);
assert_eq!(property.r#type()?, PropertyType::Toggle);
assert_eq!(
property.settings()?,
PropertyType::Toggle.default_settings()
);
assert_eq!(
property.default_value()?,
PropertyType::Toggle.default_value()
);
let property = new_property(&project, scope.clone(), PropertyType::Number, None, None);
assert_eq!(property.r#type()?, PropertyType::Number);
assert_eq!(
property.settings()?,
PropertyType::Number.default_settings()
);
assert_eq!(
property.default_value()?,
PropertyType::Number.default_value()
);
let property = new_property(&project, scope.clone(), PropertyType::Text, None, None);
assert_eq!(property.r#type()?, PropertyType::Text);
assert_eq!(property.settings()?, PropertyType::Text.default_settings());
assert_eq!(
property.default_value()?,
PropertyType::Text.default_value()
);
}
Ok(())
}
#[test]
pub fn property_default_value_changing() -> Result<(), Box<dyn std::error::Error>> {
let project = Project::open_in_memory()?;
let blueprint = new_blueprint(&project);
let property = new_property(
&project,
PropertyScope::Blueprint(blueprint.clone()),
PropertyType::Toggle,
None,
None,
);
property.set_default_value(&EntityValue::Toggle(ToggleValue::True))?;
assert_eq!(
property.default_value()?,
EntityValue::Toggle(ToggleValue::True)
);
Ok(())
}
}