Skip to content

Commit 66c32f9

Browse files
authored
NOCH : Add shown customer IDs to the search results loaded event (cap at 20) (#61)
* First pass needs tests * Updates * Tweaks
1 parent 6d8162e commit 66c32f9

File tree

6 files changed

+23
-10
lines changed

6 files changed

+23
-10
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ ConstructorIo.trackSearchSubmit("toothpicks", "tooth")
109109
### Search Events
110110

111111
```kotlin
112-
// Track when search results are loaded into view (searchTerm, resultCount)
113-
ConstructorIo.trackSearchResultsLoaded("tooth", 789)
112+
// Track when search results are loaded into view (searchTerm, resultCount, customerIds of shown items)
113+
ConstructorIo.trackSearchResultsLoaded("tooth", 789, arrayOf("1234567-AB", "1234567-AB"))
114114

115115
// Track when a search result is clicked (itemName, customerId, searchTerm, sectionName, resultId)
116116
ConstructorIo.trackSearchResultClick("Fashionable Toothpicks", "1234567-AB", "tooth", "Products", "179b8a0e-3799-4a31-be87-127b06871de2")

library/src/main/java/io/constructor/core/ConstructorIo.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -266,16 +266,17 @@ object ConstructorIo {
266266
* Tracks search results loaded (a.k.a. search results viewed) events
267267
* @param term the term that results are displayed for, i.e. "Pumpkin"
268268
* @param resultCount the number of results for that term
269+
* @param customerIds the customerIds of shown items
269270
*/
270-
fun trackSearchResultsLoaded(term: String, resultCount: Int) {
271-
var completable = trackSearchResultsLoadedInternal(term, resultCount)
271+
fun trackSearchResultsLoaded(term: String, resultCount: Int, customerIds: Array<String>? = null) {
272+
var completable = trackSearchResultsLoadedInternal(term, resultCount, customerIds)
272273
disposable.add(completable.subscribeOn(Schedulers.io()).subscribe({}, {
273274
t -> e("Search Results Loaded error: ${t.message}")
274275
}))
275276
}
276-
internal fun trackSearchResultsLoadedInternal(term: String, resultCount: Int): Completable {
277+
internal fun trackSearchResultsLoadedInternal(term: String, resultCount: Int, customerIds: Array<String>? = null): Completable {
277278
preferenceHelper.getSessionId(sessionIncrementHandler)
278-
return dataManager.trackSearchResultsLoaded(term, resultCount, arrayOf(
279+
return dataManager.trackSearchResultsLoaded(term, resultCount, customerIds, arrayOf(
279280
Constants.QueryConstants.ACTION to Constants.QueryValues.EVENT_SEARCH_RESULTS
280281
))
281282
}

library/src/main/java/io/constructor/data/DataManager.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ constructor(private val constructorApi: ConstructorApi, private val moshi: Moshi
8282
return constructorApi.trackSearchResultClick(term, itemName, customerId, params.toMap(), encodedParams.toMap())
8383
}
8484

85-
fun trackSearchResultsLoaded(term: String, resultCount: Int, params: Array<Pair<String, String>>): Completable {
86-
return constructorApi.trackSearchResultsLoaded(term, resultCount, params.toMap())
85+
fun trackSearchResultsLoaded(term: String, resultCount: Int, customerIds: Array<String>? = null, params: Array<Pair<String, String>>): Completable {
86+
return constructorApi.trackSearchResultsLoaded(term, resultCount, customerIds?.take(60)?.joinToString(","), params.toMap())
8787
}
8888

8989
fun trackInputFocus(term: String?, params: Array<Pair<String, String>>): Completable {

library/src/main/java/io/constructor/data/remote/ConstructorApi.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ interface ConstructorApi {
4545
@GET(ApiPaths.URL_BEHAVIOR)
4646
fun trackSearchResultsLoaded(@Query("term") term: String,
4747
@Query("num_results") resultCount: Int,
48+
@Query("customer_ids") customerIds: String?,
4849
@QueryMap params: Map<String, String>): Completable
4950

5051
@GET(ApiPaths.URL_BEHAVIOR)

library/src/test/java/io/constructor/core/ConstructorIoIntegrationTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.junit.Before
1111
import org.junit.Rule
1212
import org.junit.Test
1313

14-
class ConstructorIoTestIntegration {
14+
class ConstructorIoIntegrationTest {
1515

1616
@Rule
1717
@JvmField val overrideSchedulersRule = RxSchedulersOverrideRule()

library/src/test/java/io/constructor/core/ConstructorIoTrackingTest.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import java.util.concurrent.TimeUnit
1818
import kotlin.test.assertEquals
1919
import kotlin.test.assertTrue
2020

21-
class ConstructorIoTest {
21+
class ConstructorIoTrackingTest {
2222

2323
@Rule
2424
@JvmField val overrideSchedulersRule = RxSchedulersOverrideRule()
@@ -213,6 +213,17 @@ class ConstructorIoTest {
213213
assert(request.path.startsWith(path))
214214
}
215215

216+
@Test
217+
fun trackSearchResultLoadedWithCustomerIDs() {
218+
val mockResponse = MockResponse().setResponseCode(204)
219+
mockServer.enqueue(mockResponse)
220+
val observer = ConstructorIo.trackSearchResultsLoadedInternal("titanic", 10, arrayOf("TIT-REP-1997", "QE2-REP-1969")).test()
221+
observer.assertComplete()
222+
val request = mockServer.takeRequest()
223+
val path = "/behavior?term=titanic&num_results=10&customer_ids=TIT-REP-1997%2CQE2-REP-1969&action=search-results&key=copper-key&i=wacko-the-guid&ui=player-three&s=67&c=cioand-2.4.0&_dt=";
224+
assert(request.path.startsWith(path))
225+
}
226+
216227
@Test
217228
fun trackSearchResultLoaded500() {
218229
val mockResponse = MockResponse().setResponseCode(500).setBody("Internal server error")

0 commit comments

Comments
 (0)