use umbral_admin::AdminPlugin;
use umbral_admin::branding::umbral_version_label;
#[test]
fn the_default_label_tracks_the_real_crate_version() {
let label = umbral_version_label();
assert_eq!(label, format!("umbral v{}", env!("CARGO_PKG_VERSION")));
assert!(
label != "umbral v0.0.1" || env!("CARGO_PKG_VERSION") == "0.0.1",
"the label claims v0.0.1 while the crate is at {}",
env!("CARGO_PKG_VERSION")
);
}
#[test]
fn show_version_false_hides_it() {
let plugin = AdminPlugin::default().show_version(false);
assert_eq!(
plugin.branding_for_tests().version_label,
None,
"show_version(false) must clear the label entirely"
);
}
#[test]
fn version_shows_the_apps_own_string_instead_of_umbrals() {
let plugin = AdminPlugin::default().version("MyShop v2.3.1");
assert_eq!(
plugin.branding_for_tests().version_label.as_deref(),
Some("MyShop v2.3.1")
);
let plugin = AdminPlugin::default()
.show_version(false)
.version("MyShop v2.3.1");
assert_eq!(
plugin.branding_for_tests().version_label.as_deref(),
Some("MyShop v2.3.1"),
"an explicit .version(...) after show_version(false) must win — the caller said \
what they wanted second"
);
}
#[test]
fn the_version_is_shown_by_default() {
let plugin = AdminPlugin::default();
assert_eq!(
plugin.branding_for_tests().version_label,
Some(umbral_version_label())
);
}
#[test]
fn no_template_hardcodes_a_version_literal() {
let dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("templates");
for entry in std::fs::read_dir(&dir).expect("templates dir") {
let path = entry.expect("dir entry").path();
if path.extension().and_then(|e| e.to_str()) != Some("html") {
continue;
}
let body = std::fs::read_to_string(&path).expect("read template");
for line in body.lines() {
if line.contains("docs/v0.0.1") {
continue;
}
assert!(
!line.contains("v0.0.1"),
"{} hardcodes a version literal — use {{{{ admin_version }}}}:\n {}",
path.display(),
line.trim()
);
}
}
}