From 5f2d1897b245fbee12d17b5910eaf5233ca6802b Mon Sep 17 00:00:00 2001 From: salmonik Date: Tue, 5 May 2026 23:29:39 +0200 Subject: Add unit tests in /tests directory for config, database, playback, and scrobbler modules --- tests/config.rs | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 tests/config.rs (limited to 'tests/config.rs') diff --git a/tests/config.rs b/tests/config.rs new file mode 100644 index 0000000..70c5034 --- /dev/null +++ b/tests/config.rs @@ -0,0 +1,133 @@ +use rsp::config::Config; +use std::path::PathBuf; + +#[test] +fn test_config_get_scan_interval() { + let config = Config { + config_path: PathBuf::from("/test/config.toml"), + music_paths: vec![], + scan_interval: Some(3600), + socket_path: None, + lastfm_api_key: None, + lastfm_api_secret: None, + lastfm_session_key: None, + listenbrainz_token: None, + volume: None, + shuffle: None, + }; + assert_eq!(config.get("scan_interval").unwrap(), "3600"); +} + +#[test] +fn test_config_get_not_set() { + let config = Config { + config_path: PathBuf::from("/test/config.toml"), + ..Default::default() + }; + assert_eq!(config.get("scan_interval").unwrap(), "not set"); +} + +#[test] +fn test_config_get_volume() { + let config = Config { + config_path: PathBuf::from("/test/config.toml"), + music_paths: vec![], + scan_interval: None, + socket_path: None, + lastfm_api_key: None, + lastfm_api_secret: None, + lastfm_session_key: None, + listenbrainz_token: None, + volume: Some(75), + shuffle: None, + }; + assert_eq!(config.get("volume").unwrap(), "75"); +} + +#[test] +fn test_config_get_unknown_key() { + let config = Config::default(); + let result = config.get("unknown_key"); + assert!(result.is_err()); +} + +#[test] +fn test_config_set_scan_interval() { + let mut config = Config::default(); + config.set("scan_interval", "7200").unwrap(); + assert_eq!(config.scan_interval, Some(7200)); +} + +#[test] +fn test_config_set_invalid_scan_interval() { + let mut config = Config::default(); + let result = config.set("scan_interval", "invalid"); + assert!(result.is_err()); +} + +#[test] +fn test_config_set_volume() { + let mut config = Config::default(); + config.set("volume", "50").unwrap(); + assert_eq!(config.volume, Some(50)); +} + +#[test] +fn test_config_set_invalid_volume() { + let mut config = Config::default(); + let result = config.set("volume", "256"); + assert!(result.is_err()); +} + +#[test] +fn test_config_set_shuffle_valid() { + let mut config = Config::default(); + config.set("shuffle", "all").unwrap(); + assert_eq!(config.shuffle, Some("all".to_string())); +} + +#[test] +fn test_config_set_shuffle_off() { + let mut config = Config::default(); + config.set("shuffle", "off").unwrap(); + assert_eq!(config.shuffle, None); +} + +#[test] +fn test_config_set_shuffle_invalid() { + let mut config = Config::default(); + let result = config.set("shuffle", "invalid"); + assert!(result.is_err()); +} + +#[test] +fn test_config_set_unknown_key() { + let mut config = Config::default(); + let result = config.set("unknown_key", "value"); + assert!(result.is_err()); +} + +#[test] +fn test_config_unset_volume() { + let mut config = Config { + config_path: PathBuf::from("/test/config.toml"), + music_paths: vec![], + scan_interval: None, + socket_path: None, + lastfm_api_key: None, + lastfm_api_secret: None, + lastfm_session_key: None, + listenbrainz_token: None, + volume: Some(50), + shuffle: None, + }; + config.unset("volume").unwrap(); + assert_eq!(config.volume, None); +} + +#[test] +fn test_config_unset_unknown_key() { + let mut config = Config::default(); + let result = config.unset("unknown_key"); + assert!(result.is_err()); +} -- cgit v1.2.3