pristine_typescript_openrpc_server_client/
lib.rs

1
2#[macro_use]
3extern crate jsonrpc_client_core;
4use serde::{Serialize, Deserialize};
5
6#[cfg(test)]
7use autorand::Random;
8
9#[cfg(test)]
10mod test_harness;
11
12pub type HelloResult = String;
13
14jsonrpc_client!(pub struct HelloWorldRPC {
15  pub fn hello(&mut self) -> RpcRequest<HelloResult>;
16});
17
18#[cfg(test)]
19mod tests {
20    use super::*;
21    use test_harness::*;
22    use autorand::Random;
23    use futures::Future;
24
25
26  
27    #[test]
28    #[allow(non_snake_case)]
29    fn hello_test () {
30        let method = "hello".into();
31
32        let mut params = Vec::new();
33  
34        let result = HelloResult::random();
35        let result_serialized = serde_json::to_vec(&result).unwrap();
36        let result: HelloResult = serde_json::from_slice(&result_serialized).unwrap();
37
38        let transport = MockTransport {
39            method,
40            params,
41            result: serde_json::to_value(&result).unwrap(),
42        };
43
44        let mut client = HelloWorldRPC::new(transport);
45        let received_result = client.hello(
46          
47        ).wait().unwrap();
48
49        let result_s =
50        assert_eq!(result, received_result);
51    }
52
53}