use apibrasil::generated;
#[test]
fn catalogo_esta_populado() {
assert!(
!generated::WHATSAPP_ACTIONS.is_empty(),
"WHATSAPP_ACTIONS vazio — rode `cargo run --features blocking --bin codegen`"
);
assert!(!generated::EVOLUTION_PATHS.is_empty());
assert!(!generated::WHATSMEOW_ACTIONS.is_empty());
assert!(!generated::CONSULTA_SERVICOS.is_empty());
assert!(!generated::CONSULTA_TIPOS.is_empty());
assert!(!generated::SERVICE_ACTIONS.is_empty());
}
#[test]
fn actions_conhecidas_estao_no_catalogo() {
assert!(generated::has_action("whatsapp", "sendText"));
assert!(generated::has_action("dados", "lista-socios"));
assert!(!generated::has_action("whatsapp", "actionQueNaoExiste"));
assert!(!generated::has_action("servicoQueNaoExiste", "sendText"));
let cep = generated::service_actions_for("cep");
assert!(cep.contains(&"cidades"));
assert!(generated::service_actions_for("servicoQueNaoExiste").is_empty());
}
#[test]
fn metadados_de_tipo_de_consulta() {
let meta = generated::consulta_tipo("acerta-essencial").expect("tipo conhecido");
assert_eq!(meta.service, "cpf");
assert!(meta.fields.contains(&"cpf"));
assert!(generated::consulta_tipo("tipo-que-nao-existe").is_none());
}
#[test]
fn listas_geradas_estao_ordenadas_para_a_busca_binaria() {
let tipos: Vec<&str> = generated::CONSULTA_TIPOS.iter().map(|(t, _)| *t).collect();
let mut ordenados = tipos.clone();
ordenados.sort_unstable();
assert_eq!(tipos, ordenados, "CONSULTA_TIPOS precisa estar ordenado");
let servicos: Vec<&str> = generated::services().collect();
let mut ordenados = servicos.clone();
ordenados.sort_unstable();
assert_eq!(
servicos, ordenados,
"SERVICE_ACTIONS precisa estar ordenado"
);
}
#[test]
fn todos_os_servicos_do_cliente_estao_no_catalogo() {
for service in [
"whatsapp", "sms", "dados", "vehicles", "fipe", "correios", "cep", "consulta",
] {
assert!(
!generated::service_actions_for(service).is_empty(),
"o serviço {service} deveria estar no catálogo"
);
}
}