AutoCat/AutoCatCore/Mocks/SwiftLocationMock.swift

46 lines
1.3 KiB
Swift

//
// SwiftLocationMock.swift
// AutoCatCoreTests
//
// Created by Selim Mustafaev on 02.08.2024.
// Copyright © 2024 Selim Mustafaev. All rights reserved.
//
import AutoCatCore
import CoreLocation
import SwiftLocation
final class SwiftLocationMock {
var authorizationStatus: CLAuthorizationStatus = .notDetermined
var requestedStatus: CLAuthorizationStatus = .notDetermined
var location: CLLocation?
var requestLocationTime: TimeInterval = 0
var requestLocationCount = 0
}
extension SwiftLocationMock: SwiftLocationProtocol {
func requestPermission(_ permission: LocationPermission) async throws -> CLAuthorizationStatus {
authorizationStatus = requestedStatus
return requestedStatus
}
func requestLocation(accuracy filters: AccuracyFilters?,
timeout: TimeInterval?) async throws -> Tasks.ContinuousUpdateLocation.StreamEvent {
requestLocationCount += 1
if requestLocationTime > 0 {
try await Task.sleep(nanoseconds: UInt64(requestLocationTime*1_000_000_000))
}
if let location {
return .didUpdateLocations([location])
} else {
return .didUpdateLocations([])
}
}
}