lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

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 }