Skip to main content

harbor_core/
severity.rs

1/// Represents the severity levels for security issues.
2#[derive(Debug, Clone, PartialEq)]
3pub enum Severity {
4    Ok,
5    Warning,
6    Fail,
7}
8
9impl Severity {
10    pub fn to_emoji(&self) -> &'static str {
11        match self {
12            Severity::Ok => "✅",
13            Severity::Warning => "⚠️",
14            Severity::Fail => "⛔",
15        }
16    }
17}
18
19impl std::fmt::Display for Severity {
20    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
21        write!(f, "{}", self.to_emoji())
22    }
23}
24
25#[cfg(test)]
26mod tests {
27    use super::*;
28
29    #[test]
30    fn ok_severity_returns_checkmark_emoji() {
31        assert_eq!(Severity::Ok.to_emoji(), "✅");
32    }
33
34    #[test]
35    fn warning_severity_returns_warning_emoji() {
36        assert_eq!(Severity::Warning.to_emoji(), "⚠️");
37    }
38
39    #[test]
40    fn fail_severity_returns_no_entry_emoji() {
41        assert_eq!(Severity::Fail.to_emoji(), "⛔");
42    }
43
44    #[test]
45    fn severity_display_uses_emoji() {
46        assert_eq!(format!("{}", Severity::Ok), "✅");
47        assert_eq!(format!("{}", Severity::Warning), "⚠️");
48        assert_eq!(format!("{}", Severity::Fail), "⛔");
49    }
50
51    #[test]
52    fn severity_equality() {
53        assert_eq!(Severity::Ok, Severity::Ok);
54        assert_eq!(Severity::Warning, Severity::Warning);
55        assert_eq!(Severity::Fail, Severity::Fail);
56        assert_ne!(Severity::Ok, Severity::Fail);
57    }
58}