torrust_tracker_deployer_lib/presentation/cli/views/messages/
progress.rs1use super::super::{Channel, OutputMessage, Theme, VerbosityLevel};
4
5pub struct ProgressMessage {
20 pub text: String,
22}
23
24impl OutputMessage for ProgressMessage {
25 fn format(&self, theme: &Theme) -> String {
26 format!("{} {}\n", theme.progress_symbol(), self.text)
27 }
28
29 fn required_verbosity(&self) -> VerbosityLevel {
30 VerbosityLevel::Normal
31 }
32
33 fn channel(&self) -> Channel {
34 Channel::Stderr
35 }
36
37 fn type_name(&self) -> &'static str {
38 "ProgressMessage"
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn it_should_format_with_theme_when_displaying_progress() {
48 let theme = Theme::emoji();
49 let message = ProgressMessage {
50 text: "Test message".to_string(),
51 };
52
53 let formatted = message.format(&theme);
54
55 assert_eq!(formatted, "⏳ Test message\n");
56 }
57
58 #[test]
59 fn it_should_require_normal_verbosity_when_displaying_progress() {
60 let message = ProgressMessage {
61 text: "Test".to_string(),
62 };
63
64 assert_eq!(message.required_verbosity(), VerbosityLevel::Normal);
65 }
66
67 #[test]
68 fn it_should_use_stderr_channel_when_displaying_progress() {
69 let message = ProgressMessage {
70 text: "Test".to_string(),
71 };
72
73 assert_eq!(message.channel(), Channel::Stderr);
74 }
75}