use std::{collections::HashSet, error::Error, path::PathBuf}; use fomod_manager::{ instance::{files_to_install_mod, insert_mod_to_instance}, types::{Link, RootConfig}, }; fn get_parent() -> PathBuf { PathBuf::from(file!()).parent().unwrap().to_owned() } fn load_root() -> RootConfig { RootConfig::load_from_file(get_parent().join("data/root_config_complex.toml")).unwrap() } #[test] fn add_simple_mod() -> Result<(), Box> { let root_config = load_root(); let mut instance = root_config.load_instance_by_id("instance_minimal")?; let mod_to_install = root_config.mod_by_id("add_test_1").expect("Mod not found"); let files_to_add = files_to_install_mod(&root_config, &instance, &mod_to_install)?; insert_mod_to_instance(&mut instance, &mod_to_install, &files_to_add, 0)?; let installed_mods = instance.mods(); assert_eq!(installed_mods.len(), 1); let the_mod = installed_mods.first().expect("Asserted before"); assert_eq!(the_mod.mod_id(), "add_test_1"); assert_eq!(the_mod.priority(), 0); let expected_files: HashSet<_> = [Link::new("plugin.esp", "Data/plugin.esp")] .into_iter() .collect(); assert_eq!( *the_mod.files(), expected_files, "Installed files missmatch" ); Ok(()) }