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