Skip to content

Commit

Permalink
Adds testing for searchByTextRequest
Browse files Browse the repository at this point in the history
  • Loading branch information
dkhawk committed May 14, 2024
1 parent bcddcc3 commit 02fdc4b
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 3 deletions.
10 changes: 9 additions & 1 deletion places-ktx/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,20 @@ android {
testOptions {
unitTests.returnDefaultValues = true
}

buildTypes {
debug {
testCoverageEnabled = true
}
}

namespace "com.google.android.libraries.places.ktx"
}

dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.9.24'
implementation('org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0')
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.0"
implementation "com.android.volley:volley:1.2.1"
implementation 'androidx.multidex:multidex:2.0.1'
api "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.8.0"
Expand All @@ -60,4 +67,5 @@ dependencies {
testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
testImplementation "junit:junit:4.13.2"
testImplementation "org.mockito:mockito-core:5.11.0"
testImplementation "com.google.truth:truth:1.4.2"
}
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,6 @@ public suspend fun PlacesClient.awaitIsOpen(
*
* Fetches the place(s) of interest using a text query. If an error occurred, an [ApiException] will
* be thrown.
*
* Only available with Places SDK for Android (New).
*/
public suspend fun PlacesClient.awaitSearchByText(
textQuery: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ package com.google.android.libraries.places.ktx.api.net
import com.google.android.libraries.places.api.model.Place
import com.google.android.libraries.places.api.net.SearchByTextRequest

public enum class PriceLevel(public val value: Int) {
FREE(0), // Note: not for use in the API call.
INEXPENSIVE(1),
MODERATE(2),
EXPENSIVE(3),
VERY_EXPENSIVE(4)
}

/**
* Builds a new [SearchByTextRequest].
*
Expand All @@ -34,3 +42,15 @@ public fun searchByTextRequest(
.apply(actions)
.build()
}

public fun SearchByTextRequest.Builder.setPriceLevels(
priceLevels: Collection<PriceLevel>
): SearchByTextRequest.Builder {
return this.setPriceLevels(priceLevels.map { it.value })
}

public fun SearchByTextRequest.Builder.setPriceLevels(
vararg priceLevels: PriceLevel
): SearchByTextRequest.Builder {
return this.setPriceLevels(priceLevels.map { it.value })
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.google.android.libraries.places.ktx.api.net

import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.tasks.CancellationTokenSource
import com.google.android.libraries.places.api.model.CircularBounds
import com.google.android.libraries.places.api.model.Place
import com.google.android.libraries.places.api.net.SearchByTextRequest
import com.google.common.truth.Truth.assertThat
import org.junit.Test

internal class SearchByTextRequestTest {
@Test
fun testBuilderNoActions() {
val request = searchByTextRequest(
textQuery = "test query",
placeFields = listOf(Place.Field.NAME)
)

assertThat(request.textQuery).isEqualTo("test query")
assertThat(request.placeFields).containsExactly(Place.Field.NAME)
}

@Test
fun testBuilderWithActions() {
val cancellationToken = CancellationTokenSource().token
val ashland = LatLng(42.193893370553916, -122.7088890892941)
val radiusInMeters = 1500.0

val request = searchByTextRequest(
textQuery = "test query",
placeFields = listOf(Place.Field.NAME, Place.Field.ADDRESS),
) {
setCancellationToken(cancellationToken)
includedType = "national_park"
isOpenNow = true
minRating = 4.0
setPriceLevels(PriceLevel.MODERATE, PriceLevel.EXPENSIVE)
rankPreference = SearchByTextRequest.RankPreference.RELEVANCE
regionCode = "US"

locationBias = CircularBounds.newInstance(ashland, radiusInMeters)
}

assertThat(request.locationBias)
.isEqualTo(CircularBounds.newInstance(ashland, radiusInMeters))
assertThat(request.isOpenNow).isTrue()
assertThat(request.minRating).isEqualTo(4.0)
assertThat(request.priceLevels)
.containsExactly(PriceLevel.MODERATE.value, PriceLevel.EXPENSIVE.value)
assertThat(request.rankPreference).isEqualTo(SearchByTextRequest.RankPreference.RELEVANCE)
assertThat(request.regionCode).isEqualTo("US")
assertThat(request.includedType).isEqualTo("national_park")
assertThat(request.textQuery).isEqualTo("test query")
}
}

0 comments on commit 02fdc4b

Please sign in to comment.