1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use std::fmt;
use serde_json;

#[derive(Serialize, Deserialize, Debug)]
#[serde(untagged)]
pub enum Event {
    Defined(PhoenixEvent),
    Custom(String),
}

#[derive(Serialize, Deserialize, Debug)]
pub enum PhoenixEvent {
    #[serde(rename="phx_join")]
    Join,
    #[serde(rename="phx_close")]
    Close,
    #[serde(rename="phx_reply")]
    Reply,
    #[serde(rename="heartbeat")]
    Heartbeat
}

#[derive(Serialize, Deserialize)]
pub struct Test {
    event: Event
}


#[test]
fn test_event_serialization() {
    let t = Test{event: Event::Custom("blablabla".to_string())};
    let val = serde_json::to_string(&t).unwrap();
    println!("{}", val);
    assert_eq!(val, "{\"event\":\"blablabla\"}");
}