gravatar-rs 0.2.2

Gravatar image URL library
Documentation
use gravatar_rs::Generator;

const BAUKE_EMAIL: &str = "me@bauke.xyz";
const HOLLLO_EMAIL: &str = "helllo@holllo.org";

#[test]
fn test_hash_email() {
  let samples = [("bauke", BAUKE_EMAIL), ("holllo", HOLLLO_EMAIL)];
  let mut snapshot = vec![];

  for (name, email) in samples {
    snapshot.push((format!("hash-{name}"), Generator::hash_email(email)));

    snapshot.push((
      format!("hash-{name}-whitespace"),
      Generator::hash_email(&format!("  {email}  ")),
    ));

    snapshot.push((
      format!("hash-{name}-casing"),
      Generator::hash_email(&email.to_uppercase()),
    ));
  }

  insta::assert_debug_snapshot!("hash-email", snapshot);
}

#[test]
fn test_generator() {
  let emails = [BAUKE_EMAIL, HOLLLO_EMAIL];
  let samples = [
    ("gravatar", Generator::default().base_url),
    ("libravatar", "cdn.libravatar.org".to_string()),
  ];
  let mut snapshot = vec![];

  for (name, base_url) in samples {
    let generator = Generator::default().set_base_url(&base_url);
    let urls = emails.map(|email| generator.generate(email));
    snapshot.push((format!("generate-{name}"), urls));
  }

  insta::assert_debug_snapshot!("generator", snapshot);
}

#[test]
fn test_all_options() {
  let generator = Generator::default()
    .set_base_url("cdn.libravatar.org")
    .set_default_image("identicon")
    .set_force_default(true)
    .set_image_size(128)
    .set_include_file_extension(true)
    .set_rating("pg");

  let urls = [BAUKE_EMAIL, HOLLLO_EMAIL].map(|email| generator.generate(email));
  insta::assert_debug_snapshot!("generate-options", urls);
}