import XCTest @testable import NASBackup @MainActor final class ConnectViewModelTests: XCTestCase { func test_canConnect_isFalse_whenFieldsEmpty() { let vm = ConnectViewModel() XCTAssertFalse(vm.canConnect) } func test_canConnect_isTrue_whenAllFieldsFilled() { let vm = ConnectViewModel() vm.host = "192.168.1.10" vm.username = "admin" vm.password = "secret" XCTAssertTrue(vm.canConnect) } func test_connectionState_becomesVerified_onSuccess() async { let vm = ConnectViewModel() vm.host = "192.168.1.10" vm.username = "admin" vm.password = "secret" // Override the service factory so no real network call is made. let mock = MockNASService() await vm.verifyWith(transfer: mock) XCTAssertTrue(vm.isConnected) XCTAssertNil(vm.verifyError) } func test_connectionState_becomesFailed_onError() async { let vm = ConnectViewModel() vm.host = "192.168.1.10" vm.username = "admin" vm.password = "wrong" let mock = MockNASService() mock.shouldFail = true await vm.verifyWith(transfer: mock) XCTAssertFalse(vm.isConnected) XCTAssertNotNil(vm.verifyError) } }