1use std::path::PathBuf;
2
3use getset::Getters;
4use serde::{Deserialize, Serialize};
5use typed_builder::TypedBuilder;
6
7use crate::domain::value::ProjectName;
8
9#[derive(Clone, Debug, Serialize, Deserialize, Getters, TypedBuilder)]
12#[getset(get = "pub")]
13pub struct Project {
14 name: ProjectName,
15 config: PathBuf,
16}
17
18#[cfg(test)]
19mod tests {
20 use super::*;
21
22 #[test]
23 fn deserializes_name_and_config() {
24 let project: Project =
25 serde_yaml_ng::from_str("name: muster\nconfig: ~/Projects/muster/muster.yml").unwrap();
26 assert_eq!(project.name().as_ref(), "muster");
27 assert_eq!(
28 project.config(),
29 &PathBuf::from("~/Projects/muster/muster.yml")
30 );
31 }
32}