Skip to main content

unifly_api/convert/
site.rs

1use crate::integration_types;
2use crate::model::common::DataSource;
3use crate::model::entity_id::EntityId;
4use crate::model::site::Site;
5use crate::session::models::SessionSite;
6
7impl From<SessionSite> for Site {
8    fn from(s: SessionSite) -> Self {
9        let display_name = s
10            .desc
11            .filter(|d| !d.is_empty())
12            .unwrap_or_else(|| s.name.clone());
13
14        Site {
15            id: EntityId::from(s.id),
16            internal_name: s.name,
17            name: display_name,
18            device_count: None,
19            client_count: None,
20            source: DataSource::SessionApi,
21        }
22    }
23}
24
25impl From<integration_types::SiteResponse> for Site {
26    fn from(s: integration_types::SiteResponse) -> Self {
27        Site {
28            id: EntityId::Uuid(s.id),
29            internal_name: s.internal_reference,
30            name: s.name,
31            device_count: None,
32            client_count: None,
33            source: DataSource::IntegrationApi,
34        }
35    }
36}
37
38#[cfg(test)]
39mod tests {
40    use super::*;
41
42    #[test]
43    fn legacy_site_uses_desc_as_display_name() {
44        let site = SessionSite {
45            id: "abc123".into(),
46            name: "default".into(),
47            desc: Some("Main Office".into()),
48            role: None,
49            extra: serde_json::Map::new(),
50        };
51        let converted: Site = site.into();
52        assert_eq!(converted.internal_name, "default");
53        assert_eq!(converted.name, "Main Office");
54    }
55
56    #[test]
57    fn legacy_site_falls_back_to_name_when_desc_empty() {
58        let site = SessionSite {
59            id: "abc123".into(),
60            name: "branch-1".into(),
61            desc: Some(String::new()),
62            role: None,
63            extra: serde_json::Map::new(),
64        };
65        let converted: Site = site.into();
66        assert_eq!(converted.name, "branch-1");
67    }
68}