Skip to content

Commit 94a0d30

Browse files
committed
WIP Add additional test migration todos
- begin WIP testing Trigger & Lifecycle
1 parent 1610114 commit 94a0d30

File tree

2 files changed

+230
-1
lines changed

2 files changed

+230
-1
lines changed

OneSignalSDK/onesignal/in-app-messages/src/test/java/com/onesignal/inAppMessages/internal/InAppMessagesTests.kt

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
package com.onesignal.inAppMessages.internal
22

3+
import com.onesignal.OneSignal
34
import com.onesignal.debug.LogLevel
45
import com.onesignal.debug.internal.logging.Logging
6+
import com.onesignal.inAppMessages.IInAppMessageDidDismissEvent
7+
import com.onesignal.inAppMessages.IInAppMessageDidDisplayEvent
8+
import com.onesignal.inAppMessages.IInAppMessageLifecycleListener
9+
import com.onesignal.inAppMessages.IInAppMessageWillDismissEvent
10+
import com.onesignal.inAppMessages.IInAppMessageWillDisplayEvent
511
import com.onesignal.inAppMessages.internal.InAppMessagingHelpers.Companion.buildTestMessageWithRedisplay
612
import io.kotest.core.spec.style.FunSpec
713
import io.kotest.matchers.shouldBe
@@ -14,6 +20,32 @@ class InAppMessagesTests : FunSpec({
1420
val LIMIT = 5
1521
val DELAY: Long = 60
1622

23+
fun setLocalTriggerValue(key: String, localValue: String) {
24+
if (localValue != null) OneSignal.InAppMessages.addTrigger(
25+
key,
26+
localValue
27+
) else OneSignal.InAppMessages.removeTrigger(key)
28+
}
29+
30+
fun comparativeOperatorTest(
31+
operator: Trigger.OSTriggerOperator,
32+
triggerValue: String,
33+
localValue: String
34+
): Boolean {
35+
// TODO
36+
// setLocalTriggerValue("test_property", localValue)
37+
// val testMessage: InAppMessagingHelpers.OSTestInAppMessageInternal =
38+
// InAppMessagingHelpers.buildTestMessageWithSingleTrigger(
39+
// Trigger.OSTriggerKind.CUSTOM,
40+
// "test_property",
41+
// operator.toString(),
42+
// triggerValue
43+
// )
44+
//
45+
// return InAppMessagingHelpers.evaluateMessage(testMessage)
46+
return true
47+
}
48+
1749
// Define message at class level with lazy initialization
1850
val message: InAppMessagingHelpers.OSTestInAppMessageInternal by lazy {
1951
InAppMessagingHelpers.buildTestMessageWithSingleTrigger(
@@ -31,6 +63,7 @@ class InAppMessagesTests : FunSpec({
3163

3264
beforeTest {
3365
// TODO: add more from Player Model @BeforeTest in InAppMessagingUnitTests.java
66+
var iamLifecycleCounter = 0
3467
}
3568

3669
afterTest {
@@ -131,4 +164,139 @@ class InAppMessagesTests : FunSpec({
131164
messageWithoutDisplay2.addClickId(IAM_CLICK_ID)
132165
messageWithoutDisplay2.isClickAvailable(IAM_CLICK_ID) shouldBe false
133166
}
167+
168+
test ("testBuiltMessageTrigger") {
169+
// TODO
170+
}
171+
172+
test("testParsesMessageActions") {
173+
// TODO
174+
}
175+
176+
test("testSaveMultipleTriggerValuesGetTrigger") {
177+
// TODO
178+
// Since trigger getter method no longer exists, will need to refactor
179+
}
180+
181+
test("testSaveMultipleTriggerValues") {
182+
// TODO
183+
}
184+
185+
// removed tests checking for non-string trigger values
186+
187+
// create new test for ensuring only string trigger value
188+
test("testTriggerValuesAreStrings") {
189+
// TODO
190+
}
191+
192+
test("testDeleteSavedTriggerValueGetTriggers") {
193+
// TODO
194+
}
195+
196+
test("testDeleteSavedTriggerValue") {
197+
// TODO
198+
}
199+
200+
test("testDeleteMultipleTriggers") {
201+
// TODO
202+
}
203+
204+
test("testDeleteAllTriggers") {
205+
// TODO
206+
}
207+
208+
test("testGreaterThanOperator") {
209+
// TODO
210+
}
211+
212+
test("testGreaterThanOperatorWithString") {
213+
// TODO
214+
}
215+
216+
// add more operator tests
217+
218+
test("testMessageSchedulesSessionDurationTimer") {
219+
// TODO
220+
}
221+
222+
// more trigger tests
223+
224+
test("testOnMessageActionOccurredOnMessage") {
225+
// TODO:
226+
227+
// add clickListener
228+
229+
// val clickListener = object : IInAppMessageClickListener {
230+
// override fun onClick(event: IInAppMessageClickEvent) {
231+
// print(event.result.actionId)
232+
// }
233+
// }
234+
// OneSignal.InAppMessages.addClickListener(clickListener)
235+
236+
237+
//assertMainThread()
238+
//threadAndTaskWait()
239+
240+
// call onMessageActionOccurredOnMessage
241+
242+
// Ensure we make REST call to OneSignal to report click.
243+
244+
245+
// Ensure we fire public callback that In-App was clicked.
246+
}
247+
248+
test("testOnMessageWasShown") {
249+
// TODO:
250+
// threadAndTaskWait()
251+
// InAppMessagingHelpers.onMessageWasDisplayed(message)
252+
//
253+
// Compare Shadow Rest Client request
254+
}
255+
256+
test("testOnPageChanged") {
257+
// TODO
258+
}
259+
260+
261+
/* Tests for IAM Lifecycle */
262+
// var iamLifecycleCounter = 0
263+
264+
test("testIAMLifecycleEventsFlow") {
265+
// TODO
266+
// add listener and incremenet counter
267+
// val lifecycleListener = object : IInAppMessageLifecycleListener {
268+
// override fun onWillDisplay(event: IInAppMessageWillDisplayEvent) {
269+
// iamLifecycleCounter++
270+
// }
271+
//
272+
// override fun onDidDisplay(event: IInAppMessageDidDisplayEvent) {
273+
// iamLifecycleCounter++
274+
// }
275+
//
276+
// override fun onWillDismiss(event: IInAppMessageWillDismissEvent) {
277+
// iamLifecycleCounter++
278+
// }
279+
//
280+
// override fun onDidDismiss(event: IInAppMessageDidDismissEvent) {
281+
// iamLifecycleCounter++
282+
// }
283+
// }
284+
// OneSignal.InAppMessages.addLifecycleListener(lifecycleListener)
285+
286+
// threadAndTaskWait()
287+
// iamLifecycleCounter shouldBe 0
288+
// // maybe need threadAndTaskWait
289+
//
290+
// InAppMessagingHelpers.onMessageWillDisplay(message)
291+
// iamLifecycleCounter shouldBe 1
292+
//
293+
// InAppMessagingHelpers.onMessageWasDisplayed(message)
294+
// iamLifecycleCounter shouldBe 2
295+
//
296+
// InAppMessagingHelpers.onMessageWillDismiss(message)
297+
// iamLifecycleCounter shouldBe 3
298+
//
299+
// InAppMessagingHelpers.onMessageDidDismiss(message)
300+
// iamLifecycleCounter shouldBe 4
301+
}
134302
})

OneSignalSDK/onesignal/in-app-messages/src/test/java/com/onesignal/inAppMessages/internal/InAppMessagingHelpers.kt

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.onesignal.inAppMessages.internal
22

33
import com.onesignal.core.internal.time.ITime
4+
import io.mockk.mockk
45
import org.json.JSONArray
56
import org.json.JSONObject
67
import java.util.UUID
@@ -11,6 +12,43 @@ class InAppMessagingHelpers {
1112
const val TEST_ENGLISH_ANDROID_VARIANT_ID = "11e4-bed1-df8f05be55ba-a4b3gj7f-d8cc"
1213
const val IAM_CLICK_ID = "12345678-1234-1234-1234-123456789012"
1314
const val IAM_PAGE_ID = "12345678-1234-ABCD-1234-123456789012"
15+
const val IAM_HAS_LIQUID = "has_liquid"
16+
17+
internal fun evaluateMessage(message: InAppMessage) {
18+
// TODO
19+
}
20+
21+
internal fun onMessageWasDisplayed(message: InAppMessage) {
22+
val mockInAppMessageManager = mockk<InAppMessagesManager>()
23+
mockInAppMessageManager.onMessageWasDisplayed(message)
24+
}
25+
26+
internal fun onMessageActionOccurredOnMessage(
27+
message: InAppMessage,
28+
clickResult: InAppMessageClickResult
29+
) {
30+
val mockInAppMessageManager = mockk<InAppMessagesManager>()
31+
mockInAppMessageManager.onMessageActionOccurredOnMessage(message, clickResult)
32+
}
33+
34+
fun buildTestMessageWithLiquid(triggerJson: JSONArray?): OSTestInAppMessageInternal {
35+
val json = basicIAMJSONObject(triggerJson)
36+
json.put(IAM_HAS_LIQUID, true)
37+
return OSTestInAppMessageInternal(json)
38+
}
39+
40+
internal fun buildTestMessageWithSingleTriggerAndLiquid(
41+
kind: Trigger.OSTriggerKind,
42+
key: String?,
43+
operator: String?,
44+
value: Any?
45+
): OSTestInAppMessageInternal {
46+
val triggersJson = basicTrigger(
47+
kind, key,
48+
operator!!, value!!
49+
)
50+
return buildTestMessageWithLiquid(triggersJson)
51+
}
1452

1553
// Most tests build a test message using only one trigger.
1654
// This convenience method makes it easy to build such a message
@@ -115,6 +153,30 @@ class InAppMessagingHelpers {
115153
}
116154
}
117155

156+
// WIP
157+
/** IAM Lifecycle */
158+
internal fun onMessageWillDisplay(message: InAppMessage) {
159+
val mockInAppMessageManager = mockk<InAppMessagesManager>()
160+
mockInAppMessageManager.onMessageWillDisplay(message)
161+
}
162+
163+
internal fun onMessageDidDisplay(message: InAppMessage) {
164+
val mockInAppMessageManager = mockk<InAppMessagesManager>()
165+
mockInAppMessageManager.onMessageWasDisplayed(message)
166+
}
167+
168+
internal fun onMessageWillDismiss(message: InAppMessage) {
169+
val mockInAppMessageManager = mockk<InAppMessagesManager>()
170+
mockInAppMessageManager.onMessageWillDismiss(message)
171+
}
172+
173+
internal fun onMessageDidDismiss(message: InAppMessage) {
174+
val mockInAppMessageManager = mockk<InAppMessagesManager>()
175+
mockInAppMessageManager.onMessageWasDismissed(message)
176+
}
177+
178+
// End IAM Lifecycle
179+
118180
class OSTestInAppMessageInternal(
119181
private val jsonObject: JSONObject
120182
) {
@@ -173,4 +235,3 @@ class InAppMessagingHelpers {
173235
}
174236
}
175237
}
176-

0 commit comments

Comments
 (0)