Skip to content

Commit a900a4e

Browse files
committed
fix(answers): serialization and e2e tests
1 parent b5c4c75 commit a900a4e

File tree

2 files changed

+66
-47
lines changed

2 files changed

+66
-47
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package serialize.answers
2+
3+
import com.algolia.search.ExperimentalAlgoliaClientAPI
4+
import com.algolia.search.model.Attribute
5+
import com.algolia.search.model.search.AnswersQuery
6+
import com.algolia.search.model.search.Language
7+
import com.algolia.search.serialize.KeyAttributesForPrediction
8+
import com.algolia.search.serialize.KeyFilters
9+
import com.algolia.search.serialize.KeyNbHits
10+
import com.algolia.search.serialize.KeyParams
11+
import com.algolia.search.serialize.KeyQuery
12+
import com.algolia.search.serialize.KeyQueryLanguages
13+
import com.algolia.search.serialize.KeyThreshold
14+
import com.algolia.search.serialize.internal.JsonNoDefaults
15+
import kotlinx.serialization.json.JsonElement
16+
import kotlinx.serialization.json.add
17+
import kotlinx.serialization.json.buildJsonArray
18+
import kotlinx.serialization.json.buildJsonObject
19+
import kotlinx.serialization.json.put
20+
import serialize.TestSerializer
21+
22+
@OptIn(ExperimentalAlgoliaClientAPI::class)
23+
internal class TestAnswers : TestSerializer<AnswersQuery>(AnswersQuery.serializer(), JsonNoDefaults) {
24+
25+
override val items: List<Pair<AnswersQuery, JsonElement>> = listOf(
26+
27+
AnswersQuery(
28+
query = "query",
29+
queryLanguages = listOf(Language.English),
30+
attributesForPrediction = listOf(Attribute("a1"), Attribute("a2")),
31+
nbHits = 10,
32+
threshold = 20f
33+
) to buildJsonObject {
34+
put(KeyQuery, "query")
35+
put(KeyQueryLanguages, buildJsonArray { add(Language.English.raw) })
36+
put(KeyAttributesForPrediction, buildJsonArray {
37+
add("a1")
38+
add("a2")
39+
})
40+
put(KeyNbHits, 10)
41+
put(KeyThreshold, 20f)
42+
},
43+
44+
AnswersQuery(
45+
query = "query",
46+
queryLanguages = listOf(Language.English),
47+
).apply {
48+
filters = "brand:sony"
49+
} to buildJsonObject {
50+
put(KeyQuery, "query")
51+
put(KeyQueryLanguages, buildJsonArray { add(Language.English.raw) })
52+
put(KeyParams, buildJsonObject {
53+
put(KeyFilters, "brand:sony")
54+
})
55+
}
56+
)
57+
}

src/commonTest/kotlin/suite/TestSuiteAnswers.kt

Lines changed: 9 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@ package suite
22

33
import clientAnswers
44
import com.algolia.search.ExperimentalAlgoliaClientAPI
5+
import com.algolia.search.model.Attribute
56
import com.algolia.search.model.IndexName
67
import com.algolia.search.model.search.AnswersQuery
78
import com.algolia.search.model.search.Language
8-
import kotlinx.serialization.json.jsonObject
9-
import kotlinx.serialization.json.jsonPrimitive
10-
import runBlocking
11-
import shouldEqual
129
import kotlin.test.Test
10+
import kotlin.test.assertFalse
11+
import runBlocking
1312

1413
internal class TestSuiteAnswers {
1514

@@ -18,55 +17,18 @@ internal class TestSuiteAnswers {
1817

1918
@OptIn(ExperimentalAlgoliaClientAPI::class)
2019
@Test
21-
fun withResult() {
22-
runBlocking {
23-
val query = AnswersQuery(
24-
query = "sir ken robinson",
25-
queryLanguages = listOf(Language.English)
26-
)
27-
28-
val response = answers.findAnswers(query)
29-
30-
response.nbHits shouldEqual 10
31-
}
32-
}
33-
34-
@OptIn(ExperimentalAlgoliaClientAPI::class)
35-
@Test
36-
fun withoutResult() {
20+
fun testFindAnswers() {
3721
runBlocking {
3822
val query = AnswersQuery(
39-
query = "what",
40-
queryLanguages = listOf(Language.English)
41-
)
42-
43-
val response = answers.findAnswers(query)
44-
45-
response.nbHits shouldEqual 0
46-
}
47-
}
48-
49-
@OptIn(ExperimentalAlgoliaClientAPI::class)
50-
@Test
51-
fun withHighlight() {
52-
runBlocking {
53-
val query = AnswersQuery(
54-
query = "sarah jones",
23+
query = "when do babies start learning?",
5524
queryLanguages = listOf(Language.English),
56-
nbHits = 2,
57-
).apply {
58-
highlightPreTag = "_pre_"
59-
highlightPostTag = "_post_"
60-
}
25+
nbHits = 20,
26+
attributesForPrediction = listOf(Attribute("description"), Attribute("title"), Attribute("transcript"))
27+
)
6128

6229
val response = answers.findAnswers(query)
6330

64-
response.nbHits shouldEqual 2
65-
response.hits[0]
66-
.highlightResult["main_speaker"]
67-
?.jsonObject?.get("value")
68-
?.jsonPrimitive?.content shouldEqual "_pre_Sarah_post_ _pre_Jones_post_"
69-
31+
assertFalse(response.hits.map { it.answer }.isEmpty())
7032
}
7133
}
7234
}

0 commit comments

Comments
 (0)