kittynode_core/application/
add_capability.rs1use crate::infra::config::ConfigStore;
2use eyre::Result;
3
4pub fn add_capability(capability: &str) -> Result<()> {
6 let mut config = ConfigStore::load()?;
7 add_to_capabilities(&mut config.capabilities, capability);
8 ConfigStore::save_normalized(&mut config)?;
9 Ok(())
10}
11
12fn add_to_capabilities(capabilities: &mut Vec<String>, capability: &str) {
14 if !capabilities.contains(&capability.to_string()) {
15 capabilities.push(capability.to_string());
16 }
17}
18
19#[cfg(test)]
20mod tests {
21 use super::*;
22
23 #[test]
24 fn doesnt_add_duplicate() {
25 let mut capabilities = vec!["cap1".to_string(), "cap2".to_string()];
26 add_to_capabilities(&mut capabilities, "cap1");
27 assert_eq!(capabilities, vec!["cap1".to_string(), "cap2".to_string()]);
28 }
29
30 #[test]
31 fn adds_new_capability() {
32 let mut capabilities = vec!["cap1".to_string(), "cap2".to_string()];
33 add_to_capabilities(&mut capabilities, "cap3");
34 assert_eq!(
35 capabilities,
36 vec!["cap1".to_string(), "cap2".to_string(), "cap3".to_string()]
37 );
38 }
39}