use crate::ids::BuildNetwork;
pub struct NetworkInfra;
impl NetworkInfra {
#[must_use]
pub fn build_network() -> Option<BuildNetwork> {
Self::build_network_from_dfx_network(option_env!("DFX_NETWORK"))
}
#[must_use]
pub fn build_network_from_dfx_network(
dfx_network: Option<&'static str>,
) -> Option<BuildNetwork> {
match dfx_network {
Some("local") | None => Some(BuildNetwork::Local),
Some("ic") => Some(BuildNetwork::Ic),
_ => None,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn build_network_from_dfx_network_parses_ic() {
assert_eq!(
NetworkInfra::build_network_from_dfx_network(Some("ic")),
Some(BuildNetwork::Ic)
);
}
#[test]
fn build_network_from_dfx_network_parses_local() {
assert_eq!(
NetworkInfra::build_network_from_dfx_network(Some("local")),
Some(BuildNetwork::Local)
);
}
#[test]
fn build_network_from_dfx_network_rejects_unknown() {
assert_eq!(
NetworkInfra::build_network_from_dfx_network(Some("nope")),
None
);
}
#[test]
fn build_network_from_dfx_network_handles_missing() {
assert_eq!(
NetworkInfra::build_network_from_dfx_network(None),
Some(BuildNetwork::Local)
);
}
}