diff --git a/src/snapshot/tests/apply.rs b/src/snapshot/tests/apply.rs index a31c392e..1deda6db 100644 --- a/src/snapshot/tests/apply.rs +++ b/src/snapshot/tests/apply.rs @@ -1,10 +1,13 @@ +use std::collections::HashMap; + use insta::assert_yaml_snapshot; -use rbx_dom_weak::RbxInstanceProperties; +use rbx_dom_weak::{RbxId, RbxInstanceProperties, RbxValue}; +use serde::Serialize; use rojo_insta_ext::RedactionMap; use crate::snapshot::{ - apply_patch_set, InstancePropertiesWithMeta, PatchSet, PatchUpdate, RojoTree, + apply_patch_set, InstanceMetadata, InstancePropertiesWithMeta, PatchSet, PatchUpdate, RojoTree, }; #[test] @@ -27,7 +30,9 @@ fn set_name_and_class_name() { let applied_patch_set = apply_patch_set(&mut tree, patch_set); - // TODO: Snapshot tree, requires RojoTree: Serialize (but not Deserialize!) + let tree_view = view_tree(&tree); + let tree_value = redactions.redacted_yaml(tree_view); + assert_yaml_snapshot!(tree_value); let applied_patch_value = redactions.redacted_yaml(applied_patch_set); assert_yaml_snapshot!(applied_patch_value); @@ -43,3 +48,35 @@ fn empty_tree() -> RojoTree { metadata: Default::default(), }) } + +#[derive(Debug, Serialize)] +struct InstanceView { + id: RbxId, + name: String, + class_name: String, + properties: HashMap, + metadata: InstanceMetadata, + children: Vec, +} + +fn view_tree(tree: &RojoTree) -> InstanceView { + view_instance(tree, tree.get_root_id()) +} + +fn view_instance(tree: &RojoTree, id: RbxId) -> InstanceView { + let instance = tree.get_instance(id).unwrap(); + + InstanceView { + id: instance.id(), + name: instance.name().to_owned(), + class_name: instance.class_name().to_owned(), + properties: instance.properties().clone(), + metadata: instance.metadata().clone(), + children: instance + .children() + .iter() + .copied() + .map(|id| view_instance(tree, id)) + .collect(), + } +} diff --git a/src/snapshot/tests/snapshots/apply__set_name_and_class_name-2.snap b/src/snapshot/tests/snapshots/apply__set_name_and_class_name-2.snap new file mode 100644 index 00000000..25a10131 --- /dev/null +++ b/src/snapshot/tests/snapshots/apply__set_name_and_class_name-2.snap @@ -0,0 +1,12 @@ +--- +source: src/snapshot/tests/apply.rs +expression: applied_patch_value +--- +removed: [] +added: [] +updated: + - id: id-1 + changed_name: "Hello, world!" + changed_class_name: Folder + changed_properties: {} + changed_metadata: ~ diff --git a/src/snapshot/tests/snapshots/apply__set_name_and_class_name.snap b/src/snapshot/tests/snapshots/apply__set_name_and_class_name.snap index 25a10131..4d2fb365 100644 --- a/src/snapshot/tests/snapshots/apply__set_name_and_class_name.snap +++ b/src/snapshot/tests/snapshots/apply__set_name_and_class_name.snap @@ -1,12 +1,13 @@ --- source: src/snapshot/tests/apply.rs -expression: applied_patch_value +expression: tree_value --- -removed: [] -added: [] -updated: - - id: id-1 - changed_name: "Hello, world!" - changed_class_name: Folder - changed_properties: {} - changed_metadata: ~ +id: id-1 +name: "Hello, world!" +class_name: Folder +properties: {} +metadata: + ignore_unknown_instances: false + source_path: ~ + project_node: ~ +children: []