aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri
diff options
context:
space:
mode:
authorHsiangNianian <i@jyunko.cn>2026-01-18 13:08:46 +0800
committerHsiangNianian <i@jyunko.cn>2026-01-18 13:08:46 +0800
commit53df697ccf90cd13efc985c195dade48920cc0fa (patch)
tree06d61d6872215d14ea43af1848d40e88bae8d56e /src-tauri
parent9a16c14b7fde683eb41526085c15852c69bed5e5 (diff)
downloadDropOut-53df697ccf90cd13efc985c195dade48920cc0fa.tar.gz
DropOut-53df697ccf90cd13efc985c195dade48920cc0fa.zip
delete: remove instance isolation tests for cleanup
Diffstat (limited to 'src-tauri')
-rw-r--r--src-tauri/tests/instance_isolation_tests.rs198
1 files changed, 0 insertions, 198 deletions
diff --git a/src-tauri/tests/instance_isolation_tests.rs b/src-tauri/tests/instance_isolation_tests.rs
deleted file mode 100644
index dc5cacd..0000000
--- a/src-tauri/tests/instance_isolation_tests.rs
+++ /dev/null
@@ -1,198 +0,0 @@
-//! Integration tests for Instance System isolation and multi-instance behavior
-//!
-//! These tests verify that:
-//! - Each instance maintains isolated version lists
-//! - Deleting a version in one instance doesn't affect others
-//! - Fabric/Forge installation updates Instance metadata
-//! - Instance state remains consistent after operations
-
-#[cfg(test)]
-mod instance_isolation_tests {
- use std::path::PathBuf;
-
- /// Test Case 1: Version list isolation
- /// Two instances should have independent version lists
- #[test]
- fn test_instance_versions_isolated() {
- // Setup: Create two instances
- // Instance A: install version 1.20.4
- // Instance B: version list should NOT show 1.20.4 as installed
- //
- // Expected: Instance B version list is independent
- // Actual behavior: ✅ Fixed by adding instance_id to get_versions()
- println!("✅ Test 1: Versions are isolated per instance");
- }
-
- /// Test Case 2: Version deletion only affects current instance
- /// When deleting a version in Instance A, Instance B should still have it
- #[test]
- fn test_delete_version_instance_isolation() {
- // Setup:
- // - Instance A and B both have version 1.20.4 installed
- // - Delete 1.20.4 from Instance A
- //
- // Expected:
- // - Instance A no longer has 1.20.4
- // - Instance B still has 1.20.4
- // - Instance A.version_id is cleared if it was selected
- //
- // Actual behavior: ✅ Fixed by:
- // 1. Front-end passing instanceId to delete_version
- // 2. Backend cleaning up Instance.version_id
- println!("✅ Test 2: Version deletion doesn't cross instances");
- }
-
- /// Test Case 3: Fabric installation updates Instance.mod_loader
- #[test]
- fn test_fabric_install_updates_instance_metadata() {
- // Setup:
- // - Create Instance A
- // - Select version 1.20.4
- // - Install Fabric 0.14.0
- //
- // Expected:
- // - Instance A.mod_loader == "fabric"
- // - Instance A.mod_loader_version == "0.14.0"
- // - Instance A.version_id remains "1.20.4"
- //
- // Actual behavior: ✅ Fixed by updating instance_state in install_fabric()
- println!("✅ Test 3: Fabric installation updates Instance.mod_loader");
- }
-
- /// Test Case 4: Forge installation updates Instance.mod_loader
- #[test]
- fn test_forge_install_updates_instance_metadata() {
- // Setup:
- // - Create Instance B
- // - Select version 1.20.1
- // - Install Forge 47.2.0
- //
- // Expected:
- // - Instance B.mod_loader == "forge"
- // - Instance B.mod_loader_version == "47.2.0"
- // - Instance B.version_id remains "1.20.1"
- //
- // Actual behavior: ✅ Fixed by updating instance_state in install_forge()
- println!("✅ Test 4: Forge installation updates Instance.mod_loader");
- }
-
- /// Test Case 5: Deleting a modded version clears mod_loader
- #[test]
- fn test_delete_fabric_version_clears_mod_loader() {
- // Setup:
- // - Instance A has Fabric 0.14.0 for 1.20.4
- // - Instance A.mod_loader == "fabric"
- // - Delete the fabric-loader version
- //
- // Expected:
- // - Instance A.mod_loader is cleared
- // - Instance A.mod_loader_version is cleared
- //
- // Actual behavior: ✅ Fixed by delete_version cleanup logic
- println!("✅ Test 5: Deleting Fabric version clears mod_loader");
- }
-
- /// Test Case 6: Instance switching refreshes version list
- #[test]
- fn test_instance_switch_refreshes_versions() {
- // Setup:
- // - Instance A: has 1.20.4 installed
- // - Instance B: has 1.19.2 installed
- // - User switches from A to B
- //
- // Expected:
- // - Version list automatically refreshes
- // - Shows 1.19.2 as installed instead of 1.20.4
- //
- // Actual behavior: ✅ Fixed by:
- // 1. Adding $effect in GameState constructor to watch activeInstanceId
- // 2. Calling loadVersions() when activeInstanceId changes
- println!("✅ Test 6: Instance switching refreshes version list");
- }
-
- /// Test Case 7: Version metadata reflects current instance
- #[test]
- fn test_version_metadata_per_instance() {
- // Setup:
- // - Instance A: 1.20.4 installed (Java 17)
- // - Instance B: 1.20.4 NOT installed
- // - Select 1.20.4 in Instance B
- //
- // Expected:
- // - Metadata shows isInstalled: false
- // - UI correctly reflects NOT installed status
- //
- // Actual behavior: ✅ Fixed by passing instanceId to get_version_metadata
- println!("✅ Test 7: Version metadata is per-instance");
- }
-
- /// Test Case 8: Cross-instance version ID collision
- #[test]
- fn test_version_id_collision_isolated() {
- // Setup:
- // - Instance A: fabric-loader-0.14.0-1.20.4
- // - Instance B: fabric-loader-0.14.0-1.20.4 (same ID!)
- // - Delete version in Instance A
- //
- // Expected:
- // - Version removed only from Instance A's game_dir
- // - Instance B still has the version
- //
- // Actual behavior: ✅ Isolated by using instance.game_dir
- println!("✅ Test 8: Same version ID in different instances is isolated");
- }
-
- /// Test Case 9: Selected version becomes invalid after deletion
- #[test]
- fn test_selected_version_deletion_handling() {
- // Setup:
- // - Instance A: 1.20.4 is selected
- // - Delete 1.20.4
- //
- // Expected:
- // - Instance A.version_id is cleared
- // - Frontend gameState.selectedVersion is cleared
- // - No "version not found" errors on next launch attempt
- //
- // Actual behavior: ✅ Fixed by delete_version cleanup
- println!("✅ Test 9: Deleting selected version properly clears selection");
- }
-
- /// Test Case 10: Instance state consistency after mod_loader change
- #[test]
- fn test_instance_state_consistency() {
- // Setup:
- // - Install Fabric
- // - Verify Instance.mod_loader updated
- // - Fetch Instance data again
- // - Verify mod_loader persisted correctly
- //
- // Expected:
- // - Instance metadata remains consistent
- // - No stale data in memory
- //
- // Actual behavior: ✅ Fixed by proper update_instance() calls
- println!("✅ Test 10: Instance state remains consistent");
- }
-
- /// Documentation of test scenarios
- ///
- /// SCENARIO MATRIX:
- ///
- /// | Scenario | Before Fix | After Fix |
- /// |----------|-----------|-----------|
- /// | Create 2 instances, install 1.20.4 in A | ❌ Both show installed | ✅ Only A shows installed |
- /// | Delete 1.20.4 from A | ❌ B also loses it | ✅ B keeps it |
- /// | Install Fabric in A | ❌ mod_loader not updated | ✅ Instance.mod_loader updated |
- /// | Switch instance A→B | ❌ Version list stale | ✅ List auto-refreshes |
- /// | Delete Fabric version | ❌ mod_loader not cleared | ✅ Properly cleaned |
- /// | View metadata after delete | ❌ Shows wrong instance data | ✅ Correct per-instance |
- ///
- /// KEY FIXES:
- /// 1. get_versions() now takes instance_id parameter
- /// 2. delete_version frontend passes instanceId
- /// 3. GameState watches activeInstanceId and auto-refreshes
- /// 4. install_fabric/forge updates Instance.mod_loader
- /// 5. delete_version cleans up Instance state
- /// 6. get_version_metadata takes instance_id parameter
-}