1#[macro_export]
8macro_rules! assert_json_snapshot {
9 ($name:expr, $value:expr) => {{
10 let mut settings = $crate::insta::Settings::clone_current();
11 $crate::with_json_redactions(&mut settings);
12 settings.bind(|| {
13 $crate::insta::assert_json_snapshot!($name, $value);
14 });
15 }};
16 ($value:expr) => {{
17 let mut settings = $crate::insta::Settings::clone_current();
18 $crate::with_json_redactions(&mut settings);
19 settings.bind(|| {
20 $crate::insta::assert_json_snapshot!($value);
21 });
22 }};
23}
24
25pub fn with_json_redactions(settings: &mut insta::Settings) {
27 settings.add_filter(r#""id"\s*:\s*\d+"#, r#""id": "[id]""#);
28 settings.add_filter(
29 r#""created_at"\s*:\s*"[^"]*""#,
30 r#""created_at": "[datetime]""#,
31 );
32 settings.add_filter(
33 r#""updated_at"\s*:\s*"[^"]*""#,
34 r#""updated_at": "[datetime]""#,
35 );
36 settings.add_filter(
37 r#""read_at"\s*:\s*("[^"]*"|null)"#,
38 r#""read_at": "[read_at]""#,
39 );
40}