#[derive(Debug, Clone)]
pub struct UrlNamespace {
name: String,
prefix: String,
}
impl UrlNamespace {
pub fn new(name: impl Into<String>, prefix: impl Into<String>) -> Self {
Self {
name: name.into(),
prefix: prefix.into(),
}
}
pub fn name(&self) -> &str {
&self.name
}
pub fn prefix(&self) -> &str {
&self.prefix
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_namespace_creation() {
let ns = UrlNamespace::new("admin", "/admin/");
assert_eq!(ns.name(), "admin");
assert_eq!(ns.prefix(), "/admin/");
}
#[test]
fn test_namespace_with_nested_prefix() {
let ns = UrlNamespace::new("api", "/api/v1/");
assert_eq!(ns.name(), "api");
assert_eq!(ns.prefix(), "/api/v1/");
}
#[test]
fn test_namespace_clone() {
let ns = UrlNamespace::new("admin", "/admin/");
let cloned = ns.clone();
assert_eq!(cloned.name(), ns.name());
assert_eq!(cloned.prefix(), ns.prefix());
}
}