|
1 | 1 | package com.segment.analytics.liveplugins.kotlin |
2 | 2 |
|
3 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 |
| 4 | +import com.segment.analytics.kotlin.core.utilities.getInt |
| 5 | +import com.segment.analytics.kotlin.core.utilities.getString |
4 | 6 | import com.segment.analytics.liveplugins.kotlin.utils.MemorySharedPreferences |
5 | 7 | import com.segment.analytics.substrata.kotlin.JSArray |
6 | 8 | import com.segment.analytics.substrata.kotlin.JSObject |
7 | 9 | import com.segment.analytics.substrata.kotlin.JSScope |
| 10 | +import com.segment.analytics.substrata.kotlin.JsonElementConverter |
8 | 11 | import kotlinx.coroutines.ExperimentalCoroutinesApi |
| 12 | +import kotlinx.serialization.json.jsonObject |
9 | 13 | import org.junit.Assert.assertEquals |
10 | 14 | import org.junit.Assert.assertNull |
11 | 15 | import org.junit.Before |
@@ -138,24 +142,32 @@ class JSStorageTest { |
138 | 142 | @Test |
139 | 143 | fun testJSStorageWithJSObject() { |
140 | 144 | // set from js |
141 | | - var value = engine.await { |
| 145 | + var value = engine.await(true) { |
142 | 146 | evaluate("""storage.setValue("object", {name: "test", value: 42})""") |
143 | 147 | evaluate("""storage.getValue("object")""") |
144 | 148 | } |
145 | 149 | assertNull(exceptionThrown) |
146 | | - val jsObjectValue = value as JSObject |
147 | | - assertEquals("test", jsObjectValue.getString("name")) |
148 | | - assertEquals(42, jsObjectValue.getInt("value")) |
| 150 | + val jsonObject = JsonElementConverter.read(value).jsonObject |
| 151 | + assertEquals("test", jsonObject.getString("name")) |
| 152 | + assertEquals(42, jsonObject.getInt("value")) |
149 | 153 |
|
150 | 154 | // set from native |
151 | | - val nativeObject = engine.await { |
152 | | - evaluate("""{name: "native", value: 100}""") |
153 | | - } as JSObject |
154 | | - jsStorage.setValue("object", nativeObject) |
| 155 | + val nativeObject = engine.await(true) { |
| 156 | + evaluate(""" |
| 157 | + let obj = {name: "native", value: 100} |
| 158 | + obj |
| 159 | + """.trimIndent()) |
| 160 | + } |
| 161 | + jsStorage.setValue("object", nativeObject as JSObject) |
155 | 162 | value = engine.await { |
156 | | - evaluate("""storage.getValue("object")""") |
| 163 | + evaluate(""" |
| 164 | + let obj2 = storage.getValue("object") |
| 165 | + obj.name == obj2.name && obj.value == obj2.value |
| 166 | + """.trimIndent()) |
157 | 167 | } |
158 | | - val retrievedObject = value as JSObject |
| 168 | + assertEquals(true, value) |
| 169 | + val jsValue = jsStorage.getValue("object") |
| 170 | + val retrievedObject = JsonElementConverter.read(jsValue).jsonObject |
159 | 171 | assertEquals("native", retrievedObject.getString("name")) |
160 | 172 | assertEquals(100, retrievedObject.getInt("value")) |
161 | 173 | } |
|
0 commit comments