All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonTest.suite.TestSuiteSettings.kt Maven / Gradle / Ivy

Go to download

Algolia is a powerful search-as-a-service solution, made easy to use with API clients, UI libraries,and pre-built integrations. Algolia API Client for Kotlin lets you easily use the Algolia SearchREST API from your JVM project, such as Android or backend implementations.

The newest version!
package suite

import clientAdmin1
import com.algolia.search.model.search.IgnorePlurals
import com.algolia.search.model.search.Language
import com.algolia.search.model.search.RemoveStopWords
import com.algolia.search.model.search.TypoTolerance
import com.algolia.search.model.settings.Distinct
import com.algolia.search.model.settings.Settings
import com.algolia.search.model.task.TaskStatus
import kotlinx.serialization.json.buildJsonObject
import kotlinx.serialization.json.put
import runBlocking
import shouldEqual
import kotlin.test.Test

internal class TestSuiteSettings {

    private val suffix = "settings"
    private val indexName = testSuiteIndexName(suffix)
    private val index = clientAdmin1.initIndex(indexName)

    @Test
    fun test() {
        runBlocking {
            val settings = load(Settings.serializer(), "settings.json")

            index.apply {
                saveObject(buildJsonObject { put("value", 42) })
                setSettings(settings).wait() shouldEqual TaskStatus.Published
                getSettings() shouldEqual settings

                val copy = settings.copy(
                    typoTolerance = TypoTolerance.Min,
                    ignorePlurals = IgnorePlurals.QueryLanguages(Language.English, Language.French),
                    removeStopWords = RemoveStopWords.QueryLanguages(Language.English, Language.French),
                    distinct = Distinct(1),
                    userData = buildJsonObject { put("customUserData", 42.0) }
                )
                setSettings(copy).wait() shouldEqual TaskStatus.Published
                getSettings() shouldEqual copy.copy(
                    userData = buildJsonObject {
                        put(
                            "customUserData",
                            42
                        )
                    } // Round value expected to deserialize as int
                )
            }
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy