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