48 lines
1.3 KiB
Swift
48 lines
1.3 KiB
Swift
|
|
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)
|
||
|
|
}
|
||
|
|
}
|