Skip to content

Commit 236ecfc

Browse files
authored
Merge pull request #1050 from OneSignal/fix/display_test_iam_when_paused
Display test IAMs when IAMs are paused
2 parents 2875c38 + 4598161 commit 236ecfc

File tree

5 files changed

+49
-1
lines changed

5 files changed

+49
-1
lines changed

iOS_SDK/OneSignalSDK/Source/OSInAppMessageInternal.m

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,10 @@ + (instancetype)instanceWithJson:(NSDictionary * _Nonnull)json {
126126
message.hasLiquid = YES;
127127
}
128128

129+
if (json[@"is_preview"]) {
130+
message.isPreview = YES;
131+
}
132+
129133
if (json[@"triggers"] && [json[@"triggers"] isKindOfClass:[NSArray class]]) {
130134
let triggers = [NSMutableArray new];
131135

@@ -189,6 +193,10 @@ -(NSDictionary *)jsonRepresentation {
189193
if (self.hasLiquid) {
190194
json[@"has_liquid"] = @true;
191195
}
196+
197+
if (self.isPreview) {
198+
json[@"is_preview"] = @true;
199+
}
192200

193201
return json;
194202
}

iOS_SDK/OneSignalSDK/Source/OSMessagingController.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ - (void)presentInAppPreviewMessage:(OSInAppMessageInternal *)message {
316316

317317
- (void)displayMessage:(OSInAppMessageInternal *)message {
318318
// Check if the app disabled IAMs for this device before showing an IAM
319-
if (_isInAppMessagingPaused) {
319+
if (_isInAppMessagingPaused && !message.isPreview) {
320320
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"In app messages will not show while paused"];
321321
return;
322322
}

iOS_SDK/OneSignalSDK/UnitTests/InAppMessagingIntegrationTests.m

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1411,6 +1411,19 @@ - (void)testDisablingIAMs_stillCreatesMessageQueue_butPreventsMessageDisplay {
14111411
XCTAssertEqual(OSMessagingControllerOverrider.messageDisplayQueue.count, 1);
14121412
}
14131413

1414+
/*
1415+
Test IAMs should display even when IAMs are paused
1416+
*/
1417+
- (void)testPreviewIAMIsDisplayedOnPause {
1418+
[OneSignal pauseInAppMessages:true];
1419+
1420+
let message = [OSInAppMessageTestHelper testMessageWithPreview];
1421+
1422+
[self initOneSignalWithInAppMessage:message];
1423+
1424+
XCTAssertTrue(OSMessagingControllerOverrider.isInAppMessageShowing);
1425+
}
1426+
14141427
- (void)testInAppMessageIdTracked {
14151428
[OneSignal pauseInAppMessages:false];
14161429

iOS_SDK/OneSignalSDK/UnitTests/OSInAppMessagingHelpers.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ NS_ASSUME_NONNULL_BEGIN
5757
+ (OSInAppMessageInternal *)testMessageWithTriggersJson:(NSArray *)triggers redisplayLimit:(NSInteger)limit delay:(NSNumber *)delay;
5858
+ (OSInAppMessageInternal *)testMessage;
5959
+ (OSInAppMessageInternal *)testMessageWithLiquid;
60+
+ (OSInAppMessageInternal *)testMessageWithPreview;
6061
+ (OSInAppMessageInternal *)testMessageWithRedisplayLimit:(NSInteger)limit delay:(NSNumber *)delay;
6162
+ (OSInAppMessageInternal *)testMessageWithTriggers:(NSArray <NSArray<OSTrigger *> *> *)triggers;
6263
+ (OSInAppMessageInternal *)testMessageWithTriggers:(NSArray <NSArray<OSTrigger *> *> *)triggers withRedisplayLimit:(NSInteger)limit delay:(NSNumber *)delay;

iOS_SDK/OneSignalSDK/UnitTests/OSInAppMessagingHelpers.m

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,24 @@ + (NSDictionary * _Nonnull)testMessageJsonLiquid {
110110
};
111111
}
112112

113+
+ (NSDictionary * _Nonnull)testMessageJsonPreview {
114+
return @{
115+
@"type" : @"centered_modal", // Prevents issues with the "os_viewed_message" count trigger that lets us prevent a message from being shown > than X times
116+
@"id" : [NSString stringWithFormat:@"%@_%i", OS_TEST_MESSAGE_ID, ++messageIdIncrementer],
117+
@"variants" : @{
118+
@"ios" : @{
119+
@"default" : OS_TEST_MESSAGE_VARIANT_ID,
120+
@"en" : OS_TEST_ENGLISH_VARIANT_ID
121+
},
122+
@"all" : @{
123+
@"default" : @"should_never_be_used_by_any_test"
124+
}
125+
},
126+
@"triggers" : @[],
127+
@"is_preview" : @true,
128+
};
129+
}
130+
113131
+ (NSDictionary * _Nonnull)testMessageJsonRedisplay {
114132
return @{
115133
@"type" : @"centered_modal", // Prevents issues with the "os_viewed_message" count trigger that lets us prevent a message from being shown > than X times
@@ -206,6 +224,14 @@ + (OSInAppMessageInternal *)testMessageWithPastEndTime:(BOOL)pastEndTime {
206224
return [OSInAppMessageInternal instanceWithData:data];
207225
}
208226

227+
+ (OSInAppMessageInternal *)testMessageWithPreview {
228+
let messageJson = self.testMessageJsonPreview;
229+
230+
let data = [NSJSONSerialization dataWithJSONObject:messageJson options:0 error:nil];
231+
232+
return [OSInAppMessageInternal instanceWithData:data];
233+
}
234+
209235
+ (OSInAppMessageInternal *)testMessageWithRedisplayLimit:(NSInteger)limit delay:(NSNumber *)delay {
210236
let messageJson = self.testMessageJsonRedisplay;
211237

0 commit comments

Comments
 (0)