torrust_tracker_deployer_lib/presentation/cli/views/messages/
result.rs1use super::super::{Channel, OutputMessage, Theme, VerbosityLevel};
4
5pub struct ResultMessage {
10 pub text: String,
12}
13
14impl OutputMessage for ResultMessage {
15 fn format(&self, _theme: &Theme) -> String {
16 format!("{}\n", self.text)
17 }
18
19 fn required_verbosity(&self) -> VerbosityLevel {
20 VerbosityLevel::Quiet
21 }
22
23 fn channel(&self) -> Channel {
24 Channel::Stdout
25 }
26
27 fn type_name(&self) -> &'static str {
28 "ResultMessage"
29 }
30}
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35
36 #[test]
37 fn it_should_use_stdout_channel_when_displaying_result() {
38 let message = ResultMessage {
39 text: "Output data".to_string(),
40 };
41
42 assert_eq!(message.channel(), Channel::Stdout);
43 }
44
45 #[test]
46 fn it_should_require_quiet_verbosity_when_displaying_result() {
47 let message = ResultMessage {
48 text: "Output data".to_string(),
49 };
50
51 assert_eq!(message.required_verbosity(), VerbosityLevel::Quiet);
52 }
53
54 #[test]
55 fn it_should_not_include_symbols_when_formatting_result() {
56 let theme = Theme::emoji();
57 let message = ResultMessage {
58 text: "Plain output".to_string(),
59 };
60
61 let formatted = message.format(&theme);
62
63 assert!(!formatted.contains("⏳"));
65 assert!(!formatted.contains("✅"));
66 assert_eq!(formatted, "Plain output\n");
67 }
68}