diff options
| author | 2026-01-18 13:08:46 +0800 | |
|---|---|---|
| committer | 2026-01-18 13:08:46 +0800 | |
| commit | 53df697ccf90cd13efc985c195dade48920cc0fa (patch) | |
| tree | 06d61d6872215d14ea43af1848d40e88bae8d56e /src-tauri | |
| parent | 9a16c14b7fde683eb41526085c15852c69bed5e5 (diff) | |
| download | DropOut-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.rs | 198 |
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 -} |