aboutsummaryrefslogtreecommitdiff
path: root/src/messages/callback.rs
blob: ebe52228e4f3e8c0929ed2534def1e83d7161901 (plain) (blame)
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
use crate::messages::Message;
use serde_derive::{Deserialize, Serialize};
use std::collections::HashMap;

#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Callback {
    pub path: Vec<String>,
    pub request: String,
    pub content: HashMap<String, String>,
}

impl Message for Callback {
    fn name(&self) -> String {
        String::from("CALLBACK")
    }
}

impl PartialEq for Callback {
    fn eq(&self, other: &Self) -> bool {
        self.request == other.request && self.path == other.path && self.content == other.content
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_name() {
        // Arrange
        let query = HashMap::new();
        let message = Callback {
            path: vec![],
            request: String::from("GET"),
            content: query,
        };

        // Act
        let name = message.name();

        // Assert
        assert_eq!(name, "CALLBACK");
    }

    #[test]
    fn test_asoutgoing() {
        // Arrange
        let message = Callback {
            path: vec![],
            request: String::from("GET"),
            content: HashMap::new(),
        };
        let message_ref = message.clone();

        // Act
        let outgoing = message.as_outgoing();

        // Assert
        assert_eq!(outgoing.result_type, "CALLBACK");
        assert_eq!(outgoing.content, message_ref);
    }
}