use us_excel_template_data::catalog;
#[test]
fn full_catalog() {
let rows = catalog::all();
assert_eq!(rows.len(), 1008);
assert!(rows.iter().all(|r| !r.keyword.is_empty() && !r.category.is_empty()));
}
#[test]
fn top_keyword() {
let top = catalog::top(3);
assert_eq!(top[0].keyword, "excel accounting software");
assert!(top[0].monthly_search_volume_us >= top[1].monthly_search_volume_us);
}
#[test]
fn categories_aggregate() {
let cats = catalog::categories();
assert_eq!(cats.len(), 16);
assert_eq!(cats.iter().map(|c| c.keywords).sum::<usize>(), 1008);
assert_eq!(cats[0].category, "project-management");
}
#[test]
fn free_templates_have_urls() {
let free = catalog::with_free_template();
assert_eq!(free.len(), 146);
assert!(free.iter().all(|r| r.free_template_url.unwrap().starts_with("https://tabletemplates.com/")));
}
#[test]
fn search_is_case_insensitive() {
assert_eq!(catalog::search("INVOICE").len(), catalog::search("invoice").len());
assert!(!catalog::search("budget").is_empty());
}