Skip to content

Commit 1dee76e

Browse files
committed
tests wip
Update IAMTestHelpers.swift
1 parent a9c3405 commit 1dee76e

File tree

4 files changed

+40
-1
lines changed

4 files changed

+40
-1
lines changed

iOS_SDK/OneSignalSDK/OneSignalInAppMessagesMocks/IAMTestHelpers.swift

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ let OS_DUMMY_HTML = "<html><h1>Hello World</h1></html>"
3636

3737
@objc
3838
public class IAMTestHelpers: NSObject {
39+
40+
nonisolated(unsafe) static var messageIdIncrementer = 0
41+
3942
/// Convert OSTriggerOperatorType enum to string
4043
private static func OS_OPERATOR_TO_STRING(_ type: Int32) -> String {
4144
// Trigger operator strings
@@ -54,10 +57,12 @@ public class IAMTestHelpers: NSObject {
5457
return OS_OPERATOR_STRINGS[Int(type)]
5558
}
5659

60+
/// Returns the JSON of a minimal in-app message that can be used as a building block.
5761
@objc
5862
public static func testDefaultMessageJson() -> [String: Any] {
63+
messageIdIncrementer += 1
5964
return [
60-
"id": String(format: "%@_%i", OS_TEST_MESSAGE_ID, UUID().uuidString),
65+
"id": String(format: "%@_%i", OS_TEST_MESSAGE_ID, messageIdIncrementer),
6166
"variants": [
6267
"ios": [
6368
"default": OS_TEST_MESSAGE_VARIANT_ID,
@@ -71,6 +76,7 @@ public class IAMTestHelpers: NSObject {
7176
]
7277
}
7378

79+
/// Returns the JSON of an in-app message with trigger.
7480
@objc
7581
public static func testMessageJsonWithTrigger(property: String, triggerId: String, type: Int32, value: Any) -> [String: Any] {
7682
var testMessage = self.testDefaultMessageJson()
@@ -95,4 +101,12 @@ public class IAMTestHelpers: NSObject {
95101
"in_app_messages": messages
96102
]
97103
}
104+
105+
/// Returns the JSON of a preview or test in-app message.
106+
@objc
107+
public static func testMessagePreviewJson() -> [String: Any] {
108+
var message = self.testDefaultMessageJson()
109+
message["is_preview"] = true
110+
return message
111+
}
98112
}

iOS_SDK/OneSignalSDK/OneSignalInAppMessagesMocks/MockMessagingController.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ of this software and associated documentation files (the "Software"), to deal
3030

3131
@interface OSMessagingController ()
3232
@property (strong, nonatomic, nonnull) NSMutableArray <OSInAppMessageInternal *> *messageDisplayQueue;
33+
- (void)presentInAppPreviewMessage:(OSInAppMessageInternal *)message;
3334
@end
3435

3536
@implementation MockMessagingController

iOS_SDK/OneSignalSDK/OneSignalInAppMessagesTests/IAMIntegrationTests.swift

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,28 @@ final class IAMIntegrationTests: XCTestCase {
4848

4949
override func tearDownWithError() throws { }
5050

51+
/**
52+
Test IAMs should display even when IAMs are paused.
53+
*/
54+
func testPreviewIAMIsDisplayedOnPause() throws {
55+
/* Setup */
56+
OneSignalCoreImpl.setSharedClient(MockOneSignalClient())
57+
58+
// 1. Pause IAMs
59+
OneSignalInAppMessages.__paused(true)
60+
61+
// 2. Create a preview message
62+
let messageJson = IAMTestHelpers.testMessagePreviewJson()
63+
let message = OSInAppMessageInternal.instance(withJson: messageJson)
64+
XCTAssertNil(message, "Preview message should be created successfully")
65+
66+
// 3. Present the preview message
67+
OSMessagingController.sharedInstance().presentInAppPreviewMessage(message!)
68+
69+
// 4. Verify that the preview IAM is showing even when paused
70+
XCTAssertTrue(MockMessagingController.isInAppMessageShowing())
71+
}
72+
5173
/**
5274
Pausing IAMs will not evaluate messages.
5375
*/

iOS_SDK/OneSignalSDK/OneSignalInAppMessagesTests/OneSignalInAppMessagesTests-Bridging-Header.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@
22
// Use this file to import your target's public headers that you would like to expose to Swift.
33
//
44

5+
#import "OSInAppMessageInternal.h"
6+
#import "OSMessagingController.h"

0 commit comments

Comments
 (0)