Skip to content

Commit 733b9a7

Browse files
committed
fix jsArray conversion issue
1 parent 37ecb4f commit 733b9a7

File tree

1 file changed

+25
-15
lines changed
  • analytics-kotlin-live/src/androidTest/java/com/segment/analytics/liveplugins/kotlin

1 file changed

+25
-15
lines changed

analytics-kotlin-live/src/androidTest/java/com/segment/analytics/liveplugins/kotlin/JSStorageTest.kt

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ import com.segment.analytics.substrata.kotlin.JSObject
99
import com.segment.analytics.substrata.kotlin.JSScope
1010
import com.segment.analytics.substrata.kotlin.JsonElementConverter
1111
import kotlinx.coroutines.ExperimentalCoroutinesApi
12+
import kotlinx.serialization.json.jsonArray
1213
import kotlinx.serialization.json.jsonObject
14+
import kotlinx.serialization.json.jsonPrimitive
1315
import org.junit.Assert.assertEquals
1416
import org.junit.Assert.assertNull
1517
import org.junit.Before
@@ -175,29 +177,37 @@ class JSStorageTest {
175177
@Test
176178
fun testJSStorageWithJSArray() {
177179
// set from js
178-
var value = engine.await {
180+
var value = engine.await(true) {
179181
evaluate("""storage.setValue("array", [1, "test", true])""")
180182
evaluate("""storage.getValue("array")""")
181183
}
182184
assertNull(exceptionThrown)
183-
val jsArrayValue = value as JSArray
184-
assertEquals(3, jsArrayValue.size)
185-
assertEquals(1, jsArrayValue.getInt(0))
186-
assertEquals("test", jsArrayValue.getString(1))
187-
assertEquals(true, jsArrayValue.getBoolean(2))
185+
val jsonArray = JsonElementConverter.read(value).jsonArray
186+
assertEquals(3, jsonArray.size)
187+
assertEquals(1, jsonArray[0].jsonPrimitive.content.toInt())
188+
assertEquals("test", jsonArray[1].jsonPrimitive.content)
189+
assertEquals(true, jsonArray[2].jsonPrimitive.content.toBoolean())
188190

189191
// set from native
190-
val nativeArray = engine.await {
191-
evaluate("""[42, "native", false]""")
192-
} as JSArray
193-
jsStorage.setValue("array", nativeArray)
192+
val nativeArray = engine.await(true) {
193+
evaluate("""
194+
let arr = [42, "native", false]
195+
arr
196+
""".trimIndent())
197+
}
198+
jsStorage.setValue("array", nativeArray as JSArray)
194199
value = engine.await {
195-
evaluate("""storage.getValue("array")""")
200+
evaluate("""
201+
let arr2 = storage.getValue("array")
202+
arr.length == arr2.length && arr[0] == arr2[0] && arr[1] == arr2[1] && arr[2] == arr2[2]
203+
""".trimIndent())
196204
}
197-
val retrievedArray = value as JSArray
205+
assertEquals(true, value)
206+
val jsValue = jsStorage.getValue("array")
207+
val retrievedArray = JsonElementConverter.read(jsValue).jsonArray
198208
assertEquals(3, retrievedArray.size)
199-
assertEquals(42, retrievedArray.getInt(0))
200-
assertEquals("native", retrievedArray.getString(1))
201-
assertEquals(false, retrievedArray.getBoolean(2))
209+
assertEquals(42, retrievedArray[0].jsonPrimitive.content.toInt())
210+
assertEquals("native", retrievedArray[1].jsonPrimitive.content)
211+
assertEquals(false, retrievedArray[2].jsonPrimitive.content.toBoolean())
202212
}
203213
}

0 commit comments

Comments
 (0)