| #[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")); |
| }); |
| }); |
| } |