chat_platform_wasm/
lib.rs1pub mod storage;
2pub mod tab_lock;
3
4#[cfg(all(test, target_arch = "wasm32"))]
5mod tests {
6 use wasm_bindgen_test::*;
7 use chat_core::storage::SqliteStorage;
8
9 #[wasm_bindgen_test]
10 async fn wasm_storage_init_schema() {
11 let conn = crate::storage::open_storage("test-node").await.unwrap();
12 let storage = SqliteStorage::new(conn);
13 storage.init_schema().unwrap();
14 let version = storage.get_setting("__schemaVersion").unwrap();
15 assert_eq!(version, Some("1".as_bytes().to_vec()));
16 }
17
18 #[wasm_bindgen_test]
19 async fn wasm_storage_get_set_round_trip() {
20 let conn = crate::storage::open_storage("test2-node").await.unwrap();
21 let storage = SqliteStorage::new(conn);
22 storage.init_schema().unwrap();
23 storage.set_setting("myKey", b"myValue").unwrap();
24 let value = storage.get_setting("myKey").unwrap();
25 assert_eq!(value, Some(b"myValue".to_vec()));
26 }
27
28 #[wasm_bindgen_test]
29 async fn wasm_storage_stable_sender_id() {
30 let conn = crate::storage::open_storage("test3-node").await.unwrap();
31 let storage = SqliteStorage::new(conn);
32 storage.init_schema().unwrap();
33 let id1 = storage.get_stable_sender_id().unwrap();
34 let id2 = storage.get_stable_sender_id().unwrap();
35 assert!(!id1.is_empty());
36 assert_eq!(id1, id2);
37 }
38
39 #[wasm_bindgen_test]
40 async fn wasm_storage_seq_isolation() {
41 let conn = crate::storage::open_storage("test4-node").await.unwrap();
42 let storage = SqliteStorage::new(conn);
43 storage.init_schema().unwrap();
44 storage.set_seq("room-a", 3).unwrap();
45 storage.set_seq("room-b", 7).unwrap();
46 assert_eq!(storage.get_seq("room-a").unwrap(), 3);
47 assert_eq!(storage.get_seq("room-b").unwrap(), 7);
48 }
49
50 #[wasm_bindgen_test]
51 async fn wasm_storage_yjs_update_round_trip() {
52 let conn = crate::storage::open_storage("test6-node").await.unwrap();
53 let storage = SqliteStorage::new(conn);
54 storage.init_schema().unwrap();
55 storage.insert_yjs_update("room-a", b"update1", 1000).unwrap();
56 storage.insert_yjs_update("room-a", b"update2", 2000).unwrap();
57 storage.insert_yjs_update("room-b", b"update3", 1500).unwrap();
58
59 let updates = storage.get_yjs_updates("room-a").unwrap();
60 assert_eq!(updates.len(), 2);
61 assert_eq!(updates[0], b"update1".to_vec());
62 assert_eq!(updates[1], b"update2".to_vec());
63 }
64}