Skip to content

Commit e323816

Browse files
authored
Merge pull request #412 from Iterable/MOB-2235-requestcreator-coverage
[MOB-2235] more requestcreator coverage in fail cases
2 parents 518e3c8 + 5e4fe04 commit e323816

File tree

2 files changed

+78
-15
lines changed

2 files changed

+78
-15
lines changed

swift-sdk/Internal/RequestCreator.swift

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -426,21 +426,6 @@ struct RequestCreator {
426426
args: args)
427427
}
428428

429-
private static func userInterfaceIdiomEnumToString(_ idiom: UIUserInterfaceIdiom) -> String {
430-
switch idiom {
431-
case .phone:
432-
return JsonValue.DeviceIdiom.phone
433-
case .pad:
434-
return JsonValue.DeviceIdiom.pad
435-
case .tv:
436-
return JsonValue.DeviceIdiom.tv
437-
case .carPlay:
438-
return JsonValue.DeviceIdiom.carPlay
439-
default:
440-
return JsonValue.DeviceIdiom.unspecified
441-
}
442-
}
443-
444429
private static func pushServicePlatformToString(_ pushServicePlatform: PushServicePlatform, apnsType: APNSType) -> String {
445430
switch pushServicePlatform {
446431
case .production:

tests/swift-sdk-swift-tests/RequestCreatorTests.swift

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,12 +246,90 @@ class RequestCreatorTests: XCTestCase {
246246
TestUtils.validateMatch(keyPath: KeyPath(JsonKey.templateId.jsonKey), value: templateId, inDictionary: body)
247247
}
248248

249+
func testUserlessUpdateUserRequest() {
250+
let userlessRequestCreator = RequestCreator(apiKey: apiKey,
251+
auth: userlessAuth,
252+
deviceMetadata: deviceMetadata)
253+
254+
let result = userlessRequestCreator.createUpdateUserRequest(dataFields: [:], mergeNestedObjects: false)
255+
256+
switch result {
257+
case .success(_):
258+
XCTFail("request shouldn't have succeeded")
259+
case .failure(let error):
260+
XCTAssertEqual(error.errorDescription, "Both email and userId are nil")
261+
}
262+
}
263+
264+
func testUserlessUpdateSubscriptionsRequest() {
265+
let userlessRequestCreator = RequestCreator(apiKey: apiKey,
266+
auth: userlessAuth,
267+
deviceMetadata: deviceMetadata)
268+
269+
let result = userlessRequestCreator.createUpdateSubscriptionsRequest()
270+
271+
switch result {
272+
case .success(_):
273+
XCTFail("request shouldn't have succeeded")
274+
case .failure(let error):
275+
XCTAssertEqual(error.errorDescription, "Both email and userId are nil")
276+
}
277+
}
278+
279+
func testUserlessTrackInboxSessionRequest() {
280+
let userlessRequestCreator = RequestCreator(apiKey: apiKey,
281+
auth: userlessAuth,
282+
deviceMetadata: deviceMetadata)
283+
284+
let result = userlessRequestCreator.createTrackInboxSessionRequest(inboxSession: IterableInboxSession())
285+
286+
switch result {
287+
case .success(_):
288+
XCTFail("request shouldn't have succeeded")
289+
case .failure(let error):
290+
XCTAssertEqual(error.errorDescription, "Both email and userId are nil")
291+
}
292+
}
293+
294+
func testFaultyTrackInboxSessionRequest() {
295+
let condition1 = expectation(description: "no inbox session ID")
296+
let condition2 = expectation(description: "no inbox session start date")
297+
let condition3 = expectation(description: "no inbox session end date")
298+
299+
func createResultWithInboxSession(_ inboxSession: IterableInboxSession) -> Result<IterableRequest, IterableError> {
300+
return createRequestCreator().createTrackInboxSessionRequest(inboxSession: inboxSession)
301+
}
302+
303+
let inboxSessions = [IterableInboxSession(id: nil, sessionStartTime: Date(), sessionEndTime: Date()),
304+
IterableInboxSession(id: "", sessionStartTime: Date(), sessionEndTime: nil),
305+
IterableInboxSession(id: "", sessionStartTime: nil, sessionEndTime: Date())]
306+
307+
for inboxSession in inboxSessions {
308+
switch createResultWithInboxSession(inboxSession) {
309+
case .success(_):
310+
XCTFail("request shouldn't have succeeded")
311+
case .failure(let error):
312+
if error.errorDescription == "expecting session UUID" {
313+
condition1.fulfill()
314+
} else if error.errorDescription == "expecting session start time" {
315+
condition2.fulfill()
316+
} else if error.errorDescription == "expecting session end time" {
317+
condition3.fulfill()
318+
}
319+
}
320+
}
321+
322+
wait(for: [condition1, condition2, condition3], timeout: testExpectationTimeout)
323+
}
324+
249325
private let apiKey = "zee-api-key"
250326

251327
private let email = "[email protected]"
252328

253329
private let locationKeyPath = "\(JsonKey.inAppMessageContext.jsonKey).\(JsonKey.inAppLocation.jsonKey)"
254330

331+
private let userlessAuth = Auth(userId: nil, email: nil, authToken: nil)
332+
255333
private let deviceMetadata = DeviceMetadata(deviceId: IterableUtil.generateUUID(),
256334
platform: JsonValue.iOS.jsonStringValue,
257335
appPackageName: Bundle.main.appPackageName ?? "")

0 commit comments

Comments
 (0)