From 0e8509a87f400b9c9f7b6609cec109bba378b850 Mon Sep 17 00:00:00 2001 From: Philip Kristoffersen Date: Fri, 31 Dec 2021 14:57:39 +0100 Subject: [PATCH] Use bIsmanaged to decide shortcut type --- src/egs/manifest_item.rs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/egs/manifest_item.rs b/src/egs/manifest_item.rs index af31036..7aff977 100644 --- a/src/egs/manifest_item.rs +++ b/src/egs/manifest_item.rs @@ -25,6 +25,9 @@ pub(crate) struct ManifestItem { #[serde(alias = "CatalogItemId")] pub catalog_item_id: String, + + #[serde(alias = "bIsManaged")] + pub is_managed: bool, } fn exe_shortcut(manifest: ManifestItem) -> ShortcutOwned { @@ -92,7 +95,7 @@ impl ManifestItem { ) } fn needs_launcher(&self) -> bool { - false + self.is_managed } } @@ -117,4 +120,25 @@ mod tests { assert_eq!(expected, actual); } + + #[test] + fn generates_shortcut_managed() { + let json = include_str!("example_item.json"); + let mut manifest: ManifestItem = serde_json::from_str(json).unwrap(); + manifest.is_managed = true; + let shortcut: ShortcutOwned = manifest.clone().into(); + + assert_eq!(shortcut.exe, "explorer.exe"); + assert_eq!(shortcut.launch_options, manifest.get_launch_url()); + } + #[test] + fn generates_shortcut_not_managed() { + let json = include_str!("example_item.json"); + let mut manifest: ManifestItem = serde_json::from_str(json).unwrap(); + manifest.is_managed = false; + let shortcut: ShortcutOwned = manifest.clone().into(); + + assert_eq!(shortcut.exe, "\"C:\\Games\\MarvelGOTG/retail/gotg.exe\""); + assert_eq!(shortcut.launch_options, ""); + } }