61 lines
1.9 KiB
Rust
61 lines
1.9 KiB
Rust
use aim_core::app::update::build_update_plan;
|
|
use aim_core::domain::app::AppRecord;
|
|
use aim_core::domain::update::{ChannelPreference, UpdateChannelKind, UpdateStrategy};
|
|
|
|
#[test]
|
|
fn empty_registry_produces_empty_plan() {
|
|
let plan = build_update_plan(&[]).unwrap();
|
|
|
|
assert!(plan.items.is_empty());
|
|
}
|
|
|
|
#[test]
|
|
fn installed_apps_are_carried_into_review_plan() {
|
|
let apps = [AppRecord {
|
|
stable_id: "bat".to_owned(),
|
|
display_name: "Bat".to_owned(),
|
|
source_input: None,
|
|
source: None,
|
|
installed_version: None,
|
|
update_strategy: None,
|
|
metadata: Vec::new(),
|
|
}];
|
|
|
|
let plan = build_update_plan(&apps).unwrap();
|
|
|
|
assert_eq!(plan.items.len(), 1);
|
|
assert_eq!(plan.items[0].stable_id, "bat");
|
|
assert_eq!(plan.items[0].selection_reason, "install-origin-match");
|
|
}
|
|
|
|
#[test]
|
|
fn update_plan_uses_alternate_channel_after_preferred_failure() {
|
|
let apps = [AppRecord {
|
|
stable_id: "t3code".to_owned(),
|
|
display_name: "T3 Code".to_owned(),
|
|
source_input: Some("pingdotgg/t3code".to_owned()),
|
|
source: None,
|
|
installed_version: Some("0.0.11".to_owned()),
|
|
update_strategy: Some(UpdateStrategy {
|
|
preferred: ChannelPreference {
|
|
kind: UpdateChannelKind::GitHubReleases,
|
|
locator: "fail://github".to_owned(),
|
|
reason: "install-origin-match".to_owned(),
|
|
},
|
|
alternates: vec![ChannelPreference {
|
|
kind: UpdateChannelKind::ElectronBuilder,
|
|
locator: "https://example.test/latest-linux.yml".to_owned(),
|
|
reason: "metadata-guided".to_owned(),
|
|
}],
|
|
}),
|
|
metadata: Vec::new(),
|
|
}];
|
|
|
|
let plan = build_update_plan(&apps).unwrap();
|
|
|
|
assert_eq!(
|
|
plan.items[0].selected_channel.kind.as_str(),
|
|
"electron-builder"
|
|
);
|
|
assert_eq!(plan.items[0].selection_reason, "preferred-channel-failed");
|
|
}
|