catcolab_document_types/v2/
mod.rs1use 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 #[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}