expect_json/expects/
expect_op.rs1use crate::expects::SerializeExpect;
2use crate::expects::SerializeExpectOp;
3use serde::Serialize;
4use std::fmt::Debug;
5use std::ops::Deref;
6use std::ops::DerefMut;
7
8#[derive(Debug, Clone, Serialize)]
9#[serde(into = "SerializeExpect")]
10pub struct ExpectOp<V>
11where
12 V: Into<SerializeExpectOp> + Clone,
13{
14 inner: V,
15}
16
17impl<V> ExpectOp<V>
18where
19 V: Into<SerializeExpectOp> + Clone,
20{
21 pub fn new(inner: V) -> Self {
22 Self { inner }
23 }
24}
25
26impl<V> Deref for ExpectOp<V>
27where
28 V: Into<SerializeExpectOp> + Clone,
29{
30 type Target = V;
31
32 fn deref(&self) -> &Self::Target {
33 &self.inner
34 }
35}
36
37impl<V> DerefMut for ExpectOp<V>
38where
39 V: Into<SerializeExpectOp> + Clone,
40{
41 fn deref_mut(&mut self) -> &mut Self::Target {
42 &mut self.inner
43 }
44}
45
46impl<V> From<ExpectOp<V>> for SerializeExpect
47where
48 V: Into<SerializeExpectOp> + Clone,
49{
50 fn from(expect_op: ExpectOp<V>) -> Self {
51 let inner = Into::<SerializeExpectOp>::into(expect_op.inner);
52 SerializeExpect::from(inner)
53 }
54}
55
56#[cfg(test)]
57mod test_deref {
58 use super::*;
59 use crate::ops::Contains;
60 use serde_json::json;
61
62 #[test]
63 fn it_should_return_item_inside() {
64 let op = ExpectOp::new(Contains::new(json!("something")));
65 assert_eq!(op.deref(), &Contains::new(json!("something")));
66 }
67}
68
69#[cfg(test)]
70mod test_deref_mut {
71 use super::*;
72 use crate::ops::Contains;
73 use serde_json::json;
74
75 #[test]
76 fn it_should_return_item_inside() {
77 let mut op = ExpectOp::new(Contains::new(json!("something")));
78 assert_eq!(op.deref_mut(), &mut Contains::new(json!("something")));
79 }
80}