use crate::Client;
use crate::resource::Resource;
pub type TenantGroup = crate::models::TenantGroup;
pub type Tenant = crate::models::Tenant;
pub type TenantGroupsApi = Resource<crate::models::TenantGroup>;
pub type TenantsApi = Resource<crate::models::Tenant>;
#[derive(Clone)]
pub struct TenancyApi {
client: Client,
}
impl TenancyApi {
pub(crate) fn new(client: Client) -> Self {
Self { client }
}
pub fn tenant_groups(&self) -> TenantGroupsApi {
Resource::new(self.client.clone(), "tenancy/tenant-groups/")
}
pub fn tenants(&self) -> TenantsApi {
Resource::new(self.client.clone(), "tenancy/tenants/")
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::ClientConfig;
fn test_client() -> Client {
let config = ClientConfig::new("https://nautobot.example.com", "token");
Client::new(config).unwrap()
}
fn assert_path<T>(resource: Resource<T>, expected: &str)
where
T: serde::de::DeserializeOwned,
{
let paginator = resource.paginate(None).unwrap();
assert_eq!(paginator.next_url(), Some(expected));
}
#[test]
fn tenancy_accessors_return_expected_paths() {
let api = TenancyApi::new(test_client());
assert_path(api.tenant_groups(), "tenancy/tenant-groups/");
assert_path(api.tenants(), "tenancy/tenants/");
}
}