#[cfg(feature = "yaml")] use insta::assert_yaml_snapshot; use similar_asserts::assert_eq; use insta::{assert_debug_snapshot, with_settings, Settings}; #[cfg(feature = "yaml")] #[test] fn test_simple() { let mut map = std::collections::HashMap::new(); map.insert("a", "first value"); map.insert("b", "second value"); map.insert("c", "third value"); map.insert("d", "fourth value"); let mut settings = insta::Settings::new(); settings.set_sort_maps(true); settings.bind(|| { assert_yaml_snapshot!(&map, @r###" a: first value b: second value c: third value d: fourth value "###); }); } #[cfg(feature = "yaml")] #[test] fn test_bound_to_scope() { let mut map = std::collections::HashMap::new(); map.insert("a", "first value"); map.insert("b", "second value"); map.insert("c", "third value"); map.insert("d", "fourth value"); { let mut settings = Settings::new(); settings.set_sort_maps(true); let _guard = settings.bind_to_scope(); assert_yaml_snapshot!(&map, @r###" a: first value b: second value c: third value d: fourth value "###); } assert!(!Settings::clone_current().sort_maps()); } #[cfg(feature = "yaml")] #[test] fn test_settings_macro() { let mut map = std::collections::HashMap::new(); map.insert("a", "first value"); map.insert("b", "second value"); map.insert("c", "third value"); map.insert("d", "fourth value"); with_settings!({sort_maps => true}, { insta::assert_yaml_snapshot!(&map, @r###" a: first value b: second value c: third value d: fourth value "###); }); } #[test] fn test_snapshot_path() { with_settings!({snapshot_path => "snapshots2"}, { assert_debug_snapshot!(vec![1, 2, 3]); }); } #[test] fn test_snapshot_no_module_prepending() { with_settings!({prepend_module_to_snapshot => false}, { assert_debug_snapshot!(vec![1, 2, 3]); }); } #[test] fn test_snapshot_with_description() { with_settings!({description => "The snapshot is three integers"}, { assert_debug_snapshot!(vec![1, 2, 3]) }); } #[test] fn test_snapshot_with_description_and_raw_info() { use insta::internals::Content; let raw_info = Content::Map(vec![ ( Content::from("env"), Content::Seq(vec![ Content::from("ENVIRONMENT"), Content::from("production"), ]), ), ( Content::from("cmdline"), Content::Seq(vec![Content::from("my-tool"), Content::from("run")]), ), ]); with_settings!({description => "The snapshot is four integers", raw_info => &raw_info}, { assert_debug_snapshot!(vec![1, 2, 3, 4]) }); } #[cfg(feature = "serde")] #[test] fn test_snapshot_with_description_and_info() { #[derive(serde::Serialize)] pub struct Info { env: std::collections::HashMap<&'static str, &'static str>, cmdline: Vec<&'static str>, } let info = Info { env: From::from([("ENVIRONMENT", "production")]), cmdline: vec!["my-tool", "run"], }; with_settings!({description => "The snapshot is four integers", info => &info}, { assert_debug_snapshot!(vec![1, 2, 3, 4]) }); } #[test] fn test_with_settings_inherit() { with_settings!({sort_maps => true}, { with_settings!({description => "aha"}, { let settings = Settings::clone_current(); assert!(settings.sort_maps()); assert_eq!(settings.description(), Some("aha")); }); }); }