Skip to content

Commit 2a2d695

Browse files
committed
Add test for live activity receive receipts
* Add a basic tests for the request * Add this type to the the uncaching test
1 parent 26f3d84 commit 2a2d695

File tree

1 file changed

+59
-1
lines changed

1 file changed

+59
-1
lines changed

iOS_SDK/OneSignalSDK/OneSignalLiveActivitiesTests/OSLiveActivitiesExecutorTests.swift

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,31 @@ final class OSLiveActivitiesExecutorTests: XCTestCase {
152152
XCTAssertTrue(mockClient.executedRequests[0] == request)
153153
}
154154

155+
func testReceiveReceiptsWithSuccessfulRequest() throws {
156+
/* Setup */
157+
let mockDispatchQueue = MockDispatchQueue()
158+
let mockClient = MockOneSignalClient()
159+
OneSignalCoreImpl.setSharedClient(mockClient)
160+
OneSignalUserDefaults.initShared().saveString(forKey: OSUD_LEGACY_PLAYER_ID, withValue: "my-subscription-id")
161+
OneSignalUserManagerImpl.sharedInstance.start()
162+
// Wait for any user setup requests to complete
163+
OneSignalCoreMocks.waitForBackgroundThreads(seconds: 0.2)
164+
mockClient.reset()
165+
166+
let request = OSRequestLiveActivityReceiveReceipts(key: "notification-id", activityType: "my-activity-type", activityId: "my-activity-id")
167+
mockClient.setMockResponseForRequest(request: String(describing: request), response: [String: Any]())
168+
169+
/* When */
170+
let executor = OSLiveActivitiesExecutor(requestDispatch: mockDispatchQueue)
171+
executor.append(request)
172+
mockDispatchQueue.waitForDispatches(2)
173+
174+
/* Then */
175+
XCTAssertEqual(executor.receiveReceipts.items.count, 0)
176+
XCTAssertEqual(mockClient.executedRequests.count, 1)
177+
XCTAssertTrue(mockClient.executedRequests[0] == request)
178+
}
179+
155180
func testRequestWillNotExecuteWhenNoSubscription() throws {
156181
/* Setup */
157182
let mockDispatchQueue = MockDispatchQueue()
@@ -235,12 +260,14 @@ final class OSLiveActivitiesExecutorTests: XCTestCase {
235260
let removeStartToken = OSRequestRemoveStartToken(key: "key-removeStartToken")
236261
let setUpdateToken = OSRequestSetUpdateToken(key: "key-setUpdateToken", token: "my-token")
237262
let removeUpdateToken = OSRequestRemoveUpdateToken(key: "key-removeUpdateToken")
263+
let receiveReceipt = OSRequestLiveActivityReceiveReceipts(key: "key-receiveReceipt", activityType: "my-activity-type", activityId: "my-activity-id")
238264

239265
executor1.append(setStartToken)
240266
executor1.append(removeStartToken)
241267
executor1.append(setUpdateToken)
242268
executor1.append(removeUpdateToken)
243-
mockDispatchQueue.waitForDispatches(4)
269+
executor1.append(receiveReceipt)
270+
mockDispatchQueue.waitForDispatches(5)
244271

245272
// create a new executor which will uncache requests
246273
let executor2 = OSLiveActivitiesExecutor(requestDispatch: MockDispatchQueue())
@@ -253,6 +280,9 @@ final class OSLiveActivitiesExecutorTests: XCTestCase {
253280
XCTAssertEqual(executor2.updateTokens.items.count, 2)
254281
XCTAssertTrue(executor2.updateTokens.items["key-setUpdateToken"] is OSRequestSetUpdateToken)
255282
XCTAssertTrue(executor2.updateTokens.items["key-removeUpdateToken"] is OSRequestRemoveUpdateToken)
283+
284+
XCTAssertEqual(executor2.receiveReceipts.items.count, 1)
285+
XCTAssertTrue(executor2.receiveReceipts.items["key-receiveReceipt"] is OSRequestLiveActivityReceiveReceipts)
256286
}
257287

258288
func testSetStartRequestNotExecutedWithSameActivityTypeAndToken() throws {
@@ -430,4 +460,32 @@ final class OSLiveActivitiesExecutorTests: XCTestCase {
430460
XCTAssertTrue(mockClient.executedRequests[0] == request1)
431461
XCTAssertTrue(mockClient.executedRequests[1] == request2)
432462
}
463+
464+
func testReceiveReceiptsRequestNotExecutedWithSameNotificationId() throws {
465+
/* Setup */
466+
let mockDispatchQueue = MockDispatchQueue()
467+
let mockClient = MockOneSignalClient()
468+
OneSignalCoreImpl.setSharedClient(mockClient)
469+
OneSignalUserDefaults.initShared().saveString(forKey: OSUD_LEGACY_PLAYER_ID, withValue: "my-subscription-id")
470+
OneSignalUserManagerImpl.sharedInstance.start()
471+
// Wait for any user setup requests to complete
472+
OneSignalCoreMocks.waitForBackgroundThreads(seconds: 0.2)
473+
mockClient.reset()
474+
475+
let request1 = OSRequestLiveActivityReceiveReceipts(key: "my-notification-id", activityType: "my-activity-type-1", activityId: "my-activity-id-1")
476+
let request2 = OSRequestLiveActivityReceiveReceipts(key: "my-notification-id", activityType: "my-activity-type-2", activityId: "my-activity-id-2")
477+
mockClient.setMockResponseForRequest(request: String(describing: request1), response: [String: Any]())
478+
mockClient.setMockResponseForRequest(request: String(describing: request2), response: [String: Any]())
479+
480+
/* When */
481+
let executor = OSLiveActivitiesExecutor(requestDispatch: mockDispatchQueue)
482+
executor.append(request1)
483+
executor.append(request2)
484+
mockDispatchQueue.waitForDispatches(3)
485+
486+
/* Then */
487+
XCTAssertEqual(executor.receiveReceipts.items.count, 0)
488+
XCTAssertEqual(mockClient.executedRequests.count, 1)
489+
XCTAssertTrue(mockClient.executedRequests[0] == request1)
490+
}
433491
}

0 commit comments

Comments
 (0)