From 1129ac4a82198e5e2a79572cb36c4bfb73e7508c Mon Sep 17 00:00:00 2001 From: qbasso Date: Wed, 27 Feb 2019 10:01:06 +0100 Subject: [PATCH] added revenue param to purchase tracking call --- .../src/main/java/io/constructor/core/ConstructorIo.kt | 8 +++++--- library/src/main/java/io/constructor/data/DataManager.kt | 4 ++-- .../java/io/constructor/data/remote/ConstructorApi.kt | 4 +++- .../test/java/io/constructor/core/ConstructorIoTest.kt | 6 +++--- .../test/java/io/constructor/data/DataManagerHttpTest.kt | 6 +++--- .../src/test/java/io/constructor/data/DataManagerTest.kt | 6 +++--- 6 files changed, 19 insertions(+), 15 deletions(-) diff --git a/library/src/main/java/io/constructor/core/ConstructorIo.kt b/library/src/main/java/io/constructor/core/ConstructorIo.kt index 098979db..df83ba94 100755 --- a/library/src/main/java/io/constructor/core/ConstructorIo.kt +++ b/library/src/main/java/io/constructor/core/ConstructorIo.kt @@ -145,7 +145,8 @@ object ConstructorIo { fun trackConversion(itemName: String, customerId: String, revenue: Double?, searchTerm: String = Constants.QueryConstants.TERM_UNKNOWN, sectionName: String? = null, errorCallback: ConstructorError = null) { val sessionId = preferenceHelper.getSessionId(sessionIncrementEventHandler) - disposable.add(dataManager.trackConversion(searchTerm, itemName, customerId, "%.2f".format(revenue), + val revenueString = revenue?.let { "%.2f".format(revenue) } + disposable.add(dataManager.trackConversion(searchTerm, itemName, customerId, revenueString, arrayOf(Constants.QueryConstants.SESSION to sessionId.toString(), Constants.QueryConstants.AUTOCOMPLETE_SECTION to (sectionName ?: preferenceHelper.defaultItemSection))).subscribeOn(Schedulers.io()) .subscribe({}, { t -> @@ -192,12 +193,13 @@ object ConstructorIo { })) } - fun trackPurchase(clientIds: Array, sectionName: String? = null, errorCallback: ConstructorError = null) { + fun trackPurchase(clientIds: Array, revenue: Double?, sectionName: String? = null, errorCallback: ConstructorError = null) { val sessionId = preferenceHelper.getSessionId(sessionIncrementEventHandler) val sectionNameParam = sectionName ?: preferenceHelper.defaultItemSection + val revenueString = revenue?.let { "%.2f".format(revenue) } val params = mutableListOf(Constants.QueryConstants.SESSION to sessionId.toString(), Constants.QueryConstants.AUTOCOMPLETE_SECTION to sectionNameParam) - disposable.add(dataManager.trackPurchase(clientIds.toList(), params.toTypedArray()).subscribeOn(Schedulers.io()) + disposable.add(dataManager.trackPurchase(clientIds.toList(), revenueString, params.toTypedArray()).subscribeOn(Schedulers.io()) .subscribe({}, { t -> t.printStackTrace() errorCallback?.invoke(t) diff --git a/library/src/main/java/io/constructor/data/DataManager.kt b/library/src/main/java/io/constructor/data/DataManager.kt index be1e76ce..80c44395 100755 --- a/library/src/main/java/io/constructor/data/DataManager.kt +++ b/library/src/main/java/io/constructor/data/DataManager.kt @@ -53,8 +53,8 @@ constructor(private val constructorApi: ConstructorApi) { return constructorApi.trackInputFocus(term, params.toMap()) } - fun trackPurchase(customerIds: List, params: Array>): Completable { - return constructorApi.trackPurchase(customerIds, params.toMap()) + fun trackPurchase(customerIds: List, revenue: String? = null, params: Array>): Completable { + return constructorApi.trackPurchase(customerIds, revenue, params.toMap()) } } \ No newline at end of file diff --git a/library/src/main/java/io/constructor/data/remote/ConstructorApi.kt b/library/src/main/java/io/constructor/data/remote/ConstructorApi.kt index ab98edf0..128c4381 100755 --- a/library/src/main/java/io/constructor/data/remote/ConstructorApi.kt +++ b/library/src/main/java/io/constructor/data/remote/ConstructorApi.kt @@ -37,5 +37,7 @@ interface ConstructorApi { fun trackInputFocus(@Query("term") term: String?, @QueryMap params: Map): Completable @GET(ApiPaths.URL_PURCHASE) - fun trackPurchase(@Query(Constants.QueryConstants.CUSTOMER_ID) customerIds: List, @QueryMap params: Map): Completable + fun trackPurchase(@Query(Constants.QueryConstants.CUSTOMER_ID) customerIds: List, + @Query("revenue") revenue: String?, + @QueryMap params: Map): Completable } \ No newline at end of file diff --git a/library/src/test/java/io/constructor/core/ConstructorIoTest.kt b/library/src/test/java/io/constructor/core/ConstructorIoTest.kt index 897c4834..66277685 100755 --- a/library/src/test/java/io/constructor/core/ConstructorIoTest.kt +++ b/library/src/test/java/io/constructor/core/ConstructorIoTest.kt @@ -273,9 +273,9 @@ class ConstructorIoTest { @Test fun trackPurchase() { every { pref.defaultItemSection } returns "Products" - every { data.trackPurchase(any(), any()) } returns Completable.complete() - constructorIo.trackPurchase(arrayOf("id1")) - verify(exactly = 1) { data.trackPurchase(any(), any()) } + every { data.trackPurchase(any(), any(), any()) } returns Completable.complete() + constructorIo.trackPurchase(arrayOf("id1"), 12.99) + verify(exactly = 1) { data.trackPurchase(any(), any(), any()) } } } \ No newline at end of file diff --git a/library/src/test/java/io/constructor/data/DataManagerHttpTest.kt b/library/src/test/java/io/constructor/data/DataManagerHttpTest.kt index d3bb3471..1c2ad871 100755 --- a/library/src/test/java/io/constructor/data/DataManagerHttpTest.kt +++ b/library/src/test/java/io/constructor/data/DataManagerHttpTest.kt @@ -401,7 +401,7 @@ class DataManagerHttpTest { val path = "/" + ApiPaths.URL_PURCHASE val mockResponse = MockResponse().setResponseCode(204) mockServer.enqueue(mockResponse) - val observer = dataManager.trackPurchase(listOf("1", "2"), arrayOf()).test() + val observer = dataManager.trackPurchase(listOf("1", "2"), "12.99", arrayOf()).test() observer.assertComplete() val request = mockServer.takeRequest() assert(request.path.startsWith(path)) @@ -414,7 +414,7 @@ class DataManagerHttpTest { val path = "/" + ApiPaths.URL_PURCHASE val mockResponse = MockResponse().setResponseCode(500).setBody("Internal server error") mockServer.enqueue(mockResponse) - val observer = dataManager.trackPurchase(listOf("1", "2"), arrayOf()).test() + val observer = dataManager.trackPurchase(listOf("1", "2"), "12.99", arrayOf()).test() observer.assertError { true } val request = mockServer.takeRequest() assert(request.path.startsWith(path)) @@ -428,7 +428,7 @@ class DataManagerHttpTest { val mockResponse = MockResponse().setResponseCode(500).setBody("Internal server error") mockResponse.throttleBody(0, 5, TimeUnit.SECONDS) mockServer.enqueue(mockResponse) - val observer = dataManager.trackPurchase(listOf("1", "2"), arrayOf()).test() + val observer = dataManager.trackPurchase(listOf("1", "2"), "12.99", arrayOf()).test() observer.assertError(SocketTimeoutException::class.java) val request = mockServer.takeRequest() assert(request.path.startsWith(path)) diff --git a/library/src/test/java/io/constructor/data/DataManagerTest.kt b/library/src/test/java/io/constructor/data/DataManagerTest.kt index 697764b9..b834292b 100755 --- a/library/src/test/java/io/constructor/data/DataManagerTest.kt +++ b/library/src/test/java/io/constructor/data/DataManagerTest.kt @@ -186,9 +186,9 @@ class DataManagerTest { @Test fun trackPurchase() { - every { constructorApi.trackPurchase(any(), any()) } returns Completable.complete() - dataManager.trackPurchase(listOf(), arrayOf()) - verify(exactly = 1) { constructorApi.trackPurchase(any(), any()) } + every { constructorApi.trackPurchase(any(), any(), any()) } returns Completable.complete() + dataManager.trackPurchase(listOf(), "12.99", arrayOf()) + verify(exactly = 1) { constructorApi.trackPurchase(any(), any(), any()) } } } \ No newline at end of file