Skip to content

Commit 78afa06

Browse files
committed
restore ArgumentHelpersTest
1 parent f49c84d commit 78afa06

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package com.reactnativecommunity.asyncstorage.next
2+
3+
import com.facebook.react.bridge.JavaOnlyArray
4+
import com.google.common.truth.Truth.assertThat
5+
import org.junit.Assert.assertThrows
6+
import org.junit.Test
7+
import org.junit.runner.RunWith
8+
import org.junit.runners.BlockJUnit4ClassRunner
9+
10+
@RunWith(BlockJUnit4ClassRunner::class)
11+
class ArgumentHelpersTest {
12+
13+
@Test
14+
fun transformsArgumentsToEntryList() {
15+
val args = JavaOnlyArray.of(
16+
arrayListOf("key1", "value1"),
17+
arrayListOf("key2", "value2"),
18+
arrayListOf("key3", "value3")
19+
)
20+
assertThat(args.toEntryList()).isEqualTo(
21+
listOf(
22+
Entry("key1", "value1"),
23+
Entry("key2", "value2"),
24+
Entry("key3", "value3"),
25+
)
26+
)
27+
}
28+
29+
@Test
30+
fun transfersArgumentsToKeyList() {
31+
val keyList = arrayListOf("key1", "key2", "key3")
32+
val args = keyList.toReadableArray()
33+
assertThat(args.toKeyList()).isEqualTo(keyList)
34+
}
35+
36+
@Test
37+
fun throwsIfArgumentsNotValidFormat() {
38+
val invalid = listOf("invalid")
39+
val args = JavaOnlyArray.of(invalid)
40+
val error = assertThrows(AsyncStorageError::class.java) {
41+
args.toEntryList()
42+
}
43+
44+
assertThat(error is AsyncStorageError).isTrue()
45+
assertThat(error).hasMessageThat()
46+
.isEqualTo("Invalid key-value format. Expected a list of [key, value] list.")
47+
}
48+
49+
@Test
50+
fun throwsIfArgumentKeyIsNullOrNotString() {
51+
val argsInvalidNull = JavaOnlyArray.of(arrayListOf(null, "invalid"))
52+
val errorArgsInvalidNull = assertThrows(AsyncStorageError::class.java) {
53+
argsInvalidNull.toEntryList()
54+
}
55+
assertThat(errorArgsInvalidNull is AsyncStorageError).isTrue()
56+
assertThat(errorArgsInvalidNull).hasMessageThat().isEqualTo("Key cannot be null.")
57+
58+
val notStringArgs = JavaOnlyArray.of(arrayListOf(123, "invalid"))
59+
val errorNotString = assertThrows(AsyncStorageError::class.java) {
60+
notStringArgs.toEntryList()
61+
}
62+
assertThat(errorNotString is AsyncStorageError).isTrue()
63+
assertThat(errorNotString).hasMessageThat()
64+
.isEqualTo("Provided key is not string. Only strings are supported as storage key.")
65+
}
66+
67+
@Test
68+
fun throwsIfArgumentValueNotString() {
69+
val invalidArgs = JavaOnlyArray.of(arrayListOf("my_key", 666))
70+
val error = assertThrows(AsyncStorageError::class.java) {
71+
invalidArgs.toEntryList()
72+
}
73+
assertThat(error is AsyncStorageError).isTrue()
74+
assertThat(error).hasMessageThat()
75+
.isEqualTo("Value for key \"my_key\" is not a string. Only strings are supported as a value.")
76+
}
77+
}
78+
79+
80+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.reactnativecommunity.asyncstorage.next
2+
3+
import com.facebook.react.bridge.JavaOnlyArray
4+
import com.facebook.react.bridge.ReadableArray
5+
6+
fun List<Any?>.toReadableArray(): ReadableArray {
7+
val arr = JavaOnlyArray()
8+
forEach {
9+
when (it) {
10+
null -> arr.pushNull()
11+
is Boolean -> arr.pushBoolean(it)
12+
is Double -> arr.pushDouble(it)
13+
is Int -> arr.pushInt(it)
14+
is String -> arr.pushString(it)
15+
else -> throw NotImplementedError()
16+
}
17+
}
18+
return arr
19+
}

0 commit comments

Comments
 (0)