use super::super::Client;
pub(super) struct CatalogDomainMeta {
pub name: &'static str,
pub description: &'static str,
pub dependencies: &'static [&'static str],
pub provides: &'static [&'static str],
pub priority: u32,
}
macro_rules! assert_catalog_domain {
($client:expr, $feature:literal, $access:expr, $meta:expr) => {
#[cfg(feature = $feature)]
{
let meta: &super::catalog_contract_support::CatalogDomainMeta = &$meta;
let _field = $access;
assert!(
$client.registry().has_service(meta.name),
"{} feature 启用时 registry 必须报告 {}",
meta.name,
meta.name
);
let entry = $client.registry().get_service(meta.name).unwrap();
assert_eq!(entry.metadata.name, meta.name);
assert_eq!(
entry.metadata.description.as_deref(),
Some(meta.description)
);
assert_eq!(
entry.metadata.dependencies,
meta.dependencies
.iter()
.map(|s| (*s).to_string())
.collect::<Vec<_>>()
);
assert_eq!(
entry.metadata.provides,
meta.provides
.iter()
.map(|s| (*s).to_string())
.collect::<Vec<_>>()
);
assert_eq!(entry.metadata.priority, meta.priority);
}
#[cfg(not(feature = $feature))]
{
let meta: &super::catalog_contract_support::CatalogDomainMeta = &$meta;
let _ = (
meta.description,
meta.dependencies,
meta.provides,
meta.priority,
);
assert!(
!$client.registry().has_service(meta.name),
"{} feature 禁用时 registry 不得报告 {}",
meta.name,
meta.name
);
}
};
}
pub(super) fn test_client() -> Client {
Client::builder()
.app_id("test_app_id")
.app_secret("test_app_secret")
.build()
.unwrap()
}