Skip to content

Commit 58ef7a1

Browse files
committed
[tests] make Mock Client use a concurrent DispatchQueue
* When testing concurrency, the Mock Client actually was synchronizing the requests, so crashes were not reproducible * By changing to a concurrent DispatchQueue, this is more reflective of the real Client's behavior
1 parent 899541c commit 58ef7a1

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

iOS_SDK/OneSignalSDK/OneSignalCoreMocks/MockOneSignalClient.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ import OneSignalCore
2828
*/
2929
@objc
3030
public class MockOneSignalClient: NSObject, IOneSignalClient {
31-
public let executionQueue: DispatchQueue = DispatchQueue(label: "com.onesignal.execution")
31+
public let executionQueue: DispatchQueue = DispatchQueue(label: "com.onesignal.execution", attributes: .concurrent)
32+
let lock = NSLock()
3233

3334
var mockResponses: [String: [String: Any]] = [:]
3435
var mockFailureResponses: [String: NSError] = [:]
@@ -90,7 +91,9 @@ public class MockOneSignalClient: NSObject, IOneSignalClient {
9091
public func execute(_ request: OneSignalRequest, onSuccess successBlock: @escaping OSResultSuccessBlock, onFailure failureBlock: @escaping OSFailureBlock) {
9192
print("🧪 MockOneSignalClient execute called")
9293

93-
executedRequests.append(request)
94+
lock.withLock {
95+
executedRequests.append(request)
96+
}
9497

9598
if executeInstantaneously {
9699
finishExecutingRequest(request, onSuccess: successBlock, onFailure: failureBlock)

0 commit comments

Comments
 (0)