reinhardt_conf/settings/
media.rs1use reinhardt_core::macros::settings;
6use serde::{Deserialize, Serialize};
7use std::path::PathBuf;
8
9#[settings(fragment = true, section = "media")]
13#[non_exhaustive]
14#[derive(Clone, Debug, Serialize, Deserialize)]
15pub struct MediaSettings {
16 #[serde(default = "default_media_url")]
18 pub url: String,
19 #[serde(default = "default_media_root")]
21 pub root: PathBuf,
22}
23
24fn default_media_url() -> String {
25 "/media/".to_string()
26}
27
28fn default_media_root() -> PathBuf {
29 PathBuf::from("media")
30}
31
32impl Default for MediaSettings {
33 fn default() -> Self {
34 Self {
35 url: "/media/".to_string(),
36 root: PathBuf::from("media"),
37 }
38 }
39}
40
41#[cfg(test)]
42mod tests {
43 use super::*;
44 use crate::settings::fragment::SettingsFragment;
45 use rstest::rstest;
46
47 #[rstest]
48 fn test_media_section_name() {
49 let section = MediaSettings::section();
51
52 assert_eq!(section, "media");
54 }
55
56 #[rstest]
57 fn test_media_default_values() {
58 let settings = MediaSettings::default();
60
61 assert_eq!(settings.url, "/media/");
63 assert_eq!(settings.root, PathBuf::from("media"));
64 }
65}