11package com.bugsnag.android
22
33import com.bugsnag.android.internal.StateObserver
4+ import com.bugsnag.android.internal.convertToImmutableConfig
5+ import com.bugsnag.android.internal.dag.RunnableProvider
6+ import com.bugsnag.android.internal.dag.ValueProvider
47import org.junit.Assert.assertEquals
8+ import org.junit.Assert.assertNull
59import org.junit.Assert.assertTrue
610import org.junit.Test
711
@@ -22,12 +26,61 @@ class ClientObservableTest {
2226
2327 @Test
2428 fun postNdkInstall () {
25- clientObservable.postNdkInstall(BugsnagTestUtils .generateImmutableConfig(), " /foo" , 0 )
2629 clientObservable.addObserver(
2730 StateObserver {
2831 assertTrue(it is StateEvent .Install )
2932 }
3033 )
34+ clientObservable.postNdkInstall(BugsnagTestUtils .generateImmutableConfig(), " /foo" , 0 )
35+ }
36+
37+ @Test
38+ fun postNdkInstallBuildUuidNull () {
39+ // When buildUuid is null, Install event should have null buildUuid
40+ val config = BugsnagTestUtils .generateImmutableConfig()
41+ var installEvent: StateEvent .Install ? = null
42+ clientObservable.addObserver {
43+ if (it is StateEvent .Install ) installEvent = it
44+ }
45+ clientObservable.postNdkInstall(config, " /foo" , 0 )
46+ assertNull(installEvent?.buildUuid)
47+ }
48+
49+ @Test
50+ fun postNdkInstallBuildUuidComplete () {
51+ // When buildUuid is a ValueProvider (already complete), Install should include it
52+ val config = convertToImmutableConfig(
53+ BugsnagTestUtils .generateConfiguration(),
54+ ValueProvider (" test-uuid" )
55+ )
56+ var installEvent: StateEvent .Install ? = null
57+ clientObservable.addObserver(
58+ StateObserver {
59+ if (it is StateEvent .Install ) installEvent = it
60+ }
61+ )
62+ clientObservable.postNdkInstall(config, " /foo" , 0 )
63+ assertEquals(" test-uuid" , installEvent?.buildUuid)
64+ }
65+
66+ @Test
67+ fun postNdkInstallBuildUuidPending () {
68+ // When buildUuid is a pending RunnableProvider, Install should have null buildUuid
69+ val pendingProvider = object : RunnableProvider <String ?>() {
70+ override fun invoke (): String? = " deferred-uuid"
71+ }
72+ val config = convertToImmutableConfig(
73+ BugsnagTestUtils .generateConfiguration(),
74+ pendingProvider
75+ )
76+ var installEvent: StateEvent .Install ? = null
77+ clientObservable.addObserver(
78+ StateObserver {
79+ if (it is StateEvent .Install ) installEvent = it
80+ }
81+ )
82+ clientObservable.postNdkInstall(config, " /foo" , 0 )
83+ assertNull(installEvent?.buildUuid)
3184 }
3285
3386 @Test
0 commit comments