expect_json/expects/ops/contains/
mod.rs1use crate::expects::SerializeExpectOp;
2use crate::internals::types::ValueType;
3use serde::Deserialize;
4use serde::Serialize;
5use serde_json::Value;
6
7mod array_contains;
8pub use self::array_contains::*;
9
10mod string_contains;
11pub use self::string_contains::*;
12
13#[derive(Clone, Debug, Serialize, Deserialize)]
14pub enum Contains {
15 Array(ArrayContains),
16 String(StringContains),
17}
18
19impl Contains {
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(ArrayContains::new(values_array)),
27 Value::String(values_string) => Self::String(StringContains::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<Contains> for SerializeExpectOp {
39 fn from(contains: Contains) -> Self {
40 match contains {
41 Contains::Array(contains) => Self::ArrayContains(contains),
42 Contains::String(contains) => Self::StringContains(contains),
43 }
44 }
45}