71 lines
1.8 KiB
Rust
71 lines
1.8 KiB
Rust
use std::path::PathBuf;
|
|
|
|
use fomod_manager::types::RootConfig;
|
|
|
|
fn get_parent() -> PathBuf {
|
|
PathBuf::from(file!()).parent().unwrap().to_owned()
|
|
}
|
|
|
|
#[test]
|
|
fn parse_minimal() {
|
|
let config =
|
|
RootConfig::load_from_file(get_parent().join("data/root_config_minimal.toml")).unwrap();
|
|
|
|
assert!(config.mod_location().ends_with("mods"));
|
|
assert!(
|
|
config.download_location().is_none(),
|
|
"Download location should be None"
|
|
);
|
|
assert!(config.nexus_api_key().is_none());
|
|
}
|
|
|
|
#[test]
|
|
fn parse_complex() {
|
|
let config =
|
|
RootConfig::load_from_file(get_parent().join("data/root_config_complex.toml")).unwrap();
|
|
|
|
assert!(config.mod_location().ends_with("mods"));
|
|
assert!(
|
|
config
|
|
.download_location()
|
|
.is_some_and(|e| e.ends_with("downloads"))
|
|
);
|
|
assert_eq!(config.nexus_api_key(), Some("1234"));
|
|
|
|
assert!(
|
|
config
|
|
.game_by_id("example_game")
|
|
.is_some_and(|e| e.install_location() == "/home/user/games/sse"),
|
|
"Installed game wrong path"
|
|
);
|
|
|
|
assert!(
|
|
config
|
|
.game_by_id("sse")
|
|
.is_some_and(|e| e.install_location().is_absolute()),
|
|
"Relative game path was not resolved to absolute"
|
|
);
|
|
|
|
assert!(
|
|
config
|
|
.game_by_id("sse")
|
|
.is_some_and(|e| e.install_location().ends_with("games/sse")),
|
|
"Installed game wrong path"
|
|
);
|
|
|
|
assert!(config.game_by_id("starfield").is_none());
|
|
|
|
assert!(config.mod_by_id("mod1").is_some());
|
|
assert!(config.mod_by_id("mod100").is_none());
|
|
assert!(
|
|
config
|
|
.mod_by_id("mod1")
|
|
.is_some_and(|e| e.path() == "/home/user/mods/mod1")
|
|
);
|
|
assert!(
|
|
config
|
|
.mod_by_id("mod2")
|
|
.is_some_and(|e| e.path().ends_with("mod2"))
|
|
);
|
|
}
|