farm_crdt.rs (1723B)
1 #![cfg(feature = "serde_json")] 2 3 use radroots_events::{ 4 farm_crdt::{ 5 RADROOTS_FARM_CRDT_CHANGE_SCHEMA, RadrootsCrdtBackend, RadrootsFarmCrdtChange, 6 RadrootsFarmCrdtDocumentKind, RadrootsFarmSemanticKind, 7 }, 8 farm_workspace::RadrootsFarmWorkspaceRef, 9 }; 10 use radroots_events_codec::farm_crdt::encode::to_wire_parts; 11 12 const WORKSPACE_D_TAG: &str = "AAAAAAAAAAAAAAAAAAAAAA"; 13 const DOCUMENT_ID: &str = "AAAAAAAAAAAAAAAAAAAAAg"; 14 15 #[test] 16 fn farm_crdt_change_encodes_without_optional_metadata() { 17 let change = RadrootsFarmCrdtChange { 18 schema: RADROOTS_FARM_CRDT_CHANGE_SCHEMA.to_string(), 19 workspace: RadrootsFarmWorkspaceRef { 20 pubkey: "workspace_pubkey".to_string(), 21 d_tag: WORKSPACE_D_TAG.to_string(), 22 }, 23 farm_group_id: "field-group".to_string(), 24 document_id: DOCUMENT_ID.to_string(), 25 document_kind: RadrootsFarmCrdtDocumentKind::FarmTask, 26 crdt_backend: RadrootsCrdtBackend::Automerge, 27 crdt_backend_version: None, 28 actor_id: "actor_abc".to_string(), 29 change_hash: "crdt_hash_abc".to_string(), 30 dependencies: Vec::new(), 31 encoded_change: "abc-DEF_012".to_string(), 32 semantic_kind: RadrootsFarmSemanticKind::FarmTaskCreate, 33 business_time_ms: 1_780_000_000_000, 34 author_member_id: None, 35 app_version: None, 36 }; 37 38 let parts = to_wire_parts(&change).unwrap(); 39 assert!(parts.content.contains("\"actor_id\":\"actor_abc\"")); 40 assert!(parts.tags.iter().any(|tag| { 41 tag.first().map(String::as_str) == Some("a") 42 && tag.get(1).map(String::as_str) 43 == Some("30078:workspace_pubkey:AAAAAAAAAAAAAAAAAAAAAA") 44 })); 45 }