spotify_cli/output/
settings.rs1use serde::Serialize;
3
4use crate::domain::settings::Settings;
5use crate::error::Result;
6
7pub fn settings_human(settings: Settings) -> Result<()> {
8 if let Some(country) = settings.country {
9 println!("country={}", country);
10 }
11 if let Some(user_name) = settings.user_name {
12 println!("user_name={}", user_name);
13 }
14 Ok(())
15}
16
17#[derive(Serialize)]
18struct SettingsPayload {
19 country: Option<String>,
20 user_name: Option<String>,
21}
22
23pub fn settings_json(settings: Settings) -> Result<()> {
24 let payload = settings_payload(settings);
25 println!("{}", serde_json::to_string(&payload)?);
26 Ok(())
27}
28
29fn settings_payload(settings: Settings) -> SettingsPayload {
30 SettingsPayload {
31 country: settings.country,
32 user_name: settings.user_name,
33 }
34}
35
36#[cfg(test)]
37mod tests {
38 use super::settings_payload;
39 use crate::domain::settings::Settings;
40
41 #[test]
42 fn settings_payload_shape() {
43 let payload = settings_payload(Settings {
44 country: Some("AU".to_string()),
45 user_name: None,
46 });
47 assert_eq!(payload.country.as_deref(), Some("AU"));
48 assert!(payload.user_name.is_none());
49 }
50}