notifica_rust_sdk/payload/
push.rs1#[derive(Debug, Clone)]
10pub struct PushPayload(pub Vec<String>);
11
12impl PushPayload {
13 pub fn new(tokens: Vec<String>) -> Self {
15 Self(tokens)
16 }
17
18 pub fn token(mut self, token: impl Into<String>) -> Self {
20 self.0.push(token.into());
21 self
22 }
23}
24
25impl From<Vec<String>> for PushPayload {
26 fn from(tokens: Vec<String>) -> Self {
27 Self(tokens)
28 }
29}
30
31impl From<PushPayload> for Vec<String> {
32 fn from(p: PushPayload) -> Self {
33 p.0
34 }
35}
36
37#[cfg(test)]
38mod tests {
39 use super::*;
40
41 #[test]
42 fn from_vec_roundtrips() {
43 let tokens = vec!["a".into(), "b".into()];
44 let payload = PushPayload::from(tokens.clone());
45 let out: Vec<String> = payload.into();
46 assert_eq!(out, tokens);
47 }
48
49 #[test]
50 fn token_builder_appends() {
51 let p = PushPayload::new(vec![]).token("x").token("y");
52 assert_eq!(p.0, vec!["x", "y"]);
53 }
54}