expect_json/expects/ops/contains_not/
mod.rs

1use crate::expects::SerializeExpectOp;
2use crate::internals::types::ValueType;
3use serde::Deserialize;
4use serde::Serialize;
5use serde_json::Value;
6
7mod array_contains_not;
8pub use self::array_contains_not::*;
9
10mod string_contains_not;
11pub use self::string_contains_not::*;
12
13#[derive(Clone, Debug, Serialize, Deserialize)]
14pub enum ContainsNot {
15    Array(ArrayContainsNot),
16    String(StringContainsNot),
17}
18
19impl ContainsNot {
20    pub(crate) fn new<V>(values: V) -> Self
21    where
22        V: Into<Value>,
23    {
24        let value = Into::<Value>::into(values);
25        match value {
26            Value::Array(values_array) => Self::Array(ArrayContainsNot::new(values_array)),
27            Value::String(values_string) => Self::String(StringContainsNot::new(values_string)),
28            _ => {
29                let value_type = ValueType::from(&value);
30                panic!(
31                    ".contains expected to take array, string, or object. Received: {value_type}"
32                );
33            }
34        }
35    }
36}
37
38impl From<ContainsNot> for SerializeExpectOp {
39    fn from(contains: ContainsNot) -> Self {
40        match contains {
41            ContainsNot::Array(contains) => Self::ArrayContainsNot(contains),
42            ContainsNot::String(contains) => Self::StringContainsNot(contains),
43        }
44    }
45}