lib

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

farm_crdt.rs (1637B)


      1 #![cfg(feature = "json")]
      2 
      3 use radroots_event::{
      4     farm::crdt::{
      5         CrdtBackend, FarmCrdtChange, FarmCrdtDocumentKind, FarmSemanticKind,
      6         RADROOTS_FARM_CRDT_CHANGE_SCHEMA,
      7     },
      8     farm::workspace::FarmWorkspaceRef,
      9 };
     10 use radroots_event_codec::encode::farm_crdt::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 = FarmCrdtChange {
     18         schema: RADROOTS_FARM_CRDT_CHANGE_SCHEMA.to_string(),
     19         workspace: FarmWorkspaceRef {
     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: FarmCrdtDocumentKind::FarmTask,
     26         crdt_backend: CrdtBackend::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: FarmSemanticKind::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 }