catcolab_document_types/v2/
mod.rs

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