catcolab_document_types/v2/
mod.rs

1use crate::v1;
2
3pub use v1::{analysis, api, diagram_judgment, model, model_judgment, path, theory};
4
5pub mod cell;
6pub mod document;
7pub mod notebook;
8
9pub use analysis::*;
10pub use api::*;
11pub use cell::*;
12pub use diagram_judgment::*;
13pub use document::*;
14pub use model::*;
15pub use model_judgment::*;
16pub use notebook::*;
17pub use theory::*;
18
19#[cfg(test)]
20mod test {
21    use super::document::Document;
22    use crate::test_utils::test_example_documents;
23
24    #[test]
25    fn test_v2_examples() {
26        test_example_documents::<Document, _>("examples/v2", |_, _| {});
27    }
28}
29
30#[cfg(test)]
31mod migration_test {
32    use super::*;
33    use crate::v1;
34    use std::collections::HashMap;
35    use uuid::Uuid;
36
37    /// Migration drops stem cells from both `cell_contents` and `cell_order`,
38    /// while preserving non-stem cells in order.
39    #[test]
40    fn migrate_drops_stem_cells() {
41        let id_text = Uuid::from_u128(1);
42        let id_stem = Uuid::from_u128(2);
43        let id_text2 = Uuid::from_u128(3);
44
45        let mut cell_contents: HashMap<Uuid, v1::NotebookCell<()>> = HashMap::new();
46        cell_contents
47            .insert(id_text, v1::NotebookCell::RichText { id: id_text, content: "first".into() });
48        cell_contents.insert(id_stem, v1::NotebookCell::Stem { id: id_stem });
49        cell_contents.insert(
50            id_text2,
51            v1::NotebookCell::RichText { id: id_text2, content: "second".into() },
52        );
53
54        let old = v1::Notebook {
55            cell_contents,
56            cell_order: vec![id_text, id_stem, id_text2],
57        };
58
59        let new = Notebook::<()>::migrate_from_v1(old);
60
61        assert_eq!(new.cell_order, vec![id_text, id_text2]);
62        assert_eq!(new.cell_contents.len(), 2);
63        assert!(new.cell_contents.contains_key(&id_text));
64        assert!(new.cell_contents.contains_key(&id_text2));
65        assert!(!new.cell_contents.contains_key(&id_stem));
66    }
67}