Skip to content

Commit 1921b8a

Browse files
author
Andras
committed
(bug-fix): IndexName Illegal state inside Insights Controller
1 parent cfc4607 commit 1921b8a

2 files changed

Lines changed: 118 additions & 1 deletion

File tree

  • instantsearch-insights/src

‎instantsearch-insights/src/androidUnitTest/kotlin/com/algolia/instantsearch/insights/InsightsTest.kt‎

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,4 +462,121 @@ internal class InsightsTest {
462462
}
463463
}
464464
}
465+
466+
private val noOpWorker = object : InsightsManager {
467+
override fun startPeriodicUpload() = Unit
468+
override fun startOneTimeUpload() = Unit
469+
}
470+
471+
private fun createControllerWithRepository(
472+
testIndexName: String = "test-index",
473+
): Pair<InsightsController, MockLocalRepository> {
474+
val events = mutableListOf<InsightsEventDO>()
475+
val localRepository = MockLocalRepository(events)
476+
val distantRepository = MockDistantRepository()
477+
val cache = InsightsEventCache(localRepository)
478+
val uploader = InsightsEventUploader(localRepository, distantRepository)
479+
val controller = InsightsController(testIndexName, noOpWorker, cache, uploader, false)
480+
.apply { userToken = this@InsightsTest.userToken }
481+
return controller to localRepository
482+
}
483+
484+
@Test
485+
fun testClickedObjectIDsAfterSearchSetsIndexName() {
486+
val (controller, repo) = createControllerWithRepository()
487+
controller.clickedObjectIDsAfterSearch(
488+
eventName = eventA,
489+
queryID = queryID,
490+
objectIDs = objectIDs,
491+
positions = positions,
492+
)
493+
val stored = repo.read()
494+
assertEquals(1, stored.size)
495+
assertEquals("test-index", stored[0].indexName)
496+
}
497+
498+
@Test
499+
fun testConvertedObjectIDsAfterSearchSetsIndexName() {
500+
val (controller, repo) = createControllerWithRepository()
501+
controller.convertedObjectIDsAfterSearch(
502+
eventName = eventA,
503+
queryID = queryID,
504+
objectIDs = objectIDs,
505+
)
506+
val stored = repo.read()
507+
assertEquals(1, stored.size)
508+
assertEquals("test-index", stored[0].indexName)
509+
}
510+
511+
@Test
512+
fun testViewedObjectIDsSetsIndexName() {
513+
val (controller, repo) = createControllerWithRepository()
514+
controller.viewedObjectIDs(
515+
eventName = eventA,
516+
objectIDs = objectIDs,
517+
)
518+
val stored = repo.read()
519+
assertEquals(1, stored.size)
520+
assertEquals("test-index", stored[0].indexName)
521+
}
522+
523+
@Test
524+
fun testClickedObjectIDsSetsIndexName() {
525+
val (controller, repo) = createControllerWithRepository()
526+
controller.clickedObjectIDs(
527+
eventName = eventA,
528+
objectIDs = objectIDs,
529+
)
530+
val stored = repo.read()
531+
assertEquals(1, stored.size)
532+
assertEquals("test-index", stored[0].indexName)
533+
}
534+
535+
@Test
536+
fun testViewedFiltersSetsIndexName() {
537+
val (controller, repo) = createControllerWithRepository()
538+
controller.viewedFilters(
539+
eventName = eventA,
540+
filters = filters,
541+
)
542+
val stored = repo.read()
543+
assertEquals(1, stored.size)
544+
assertEquals("test-index", stored[0].indexName)
545+
}
546+
547+
@Test
548+
fun testClickedFiltersSetsIndexName() {
549+
val (controller, repo) = createControllerWithRepository()
550+
controller.clickedFilters(
551+
eventName = eventA,
552+
filters = filters,
553+
)
554+
val stored = repo.read()
555+
assertEquals(1, stored.size)
556+
assertEquals("test-index", stored[0].indexName)
557+
}
558+
559+
@Test
560+
fun testConvertedFiltersSetsIndexName() {
561+
val (controller, repo) = createControllerWithRepository()
562+
controller.convertedFilters(
563+
eventName = eventA,
564+
filters = filters,
565+
)
566+
val stored = repo.read()
567+
assertEquals(1, stored.size)
568+
assertEquals("test-index", stored[0].indexName)
569+
}
570+
571+
@Test
572+
fun testConvertedObjectIDsSetsIndexName() {
573+
val (controller, repo) = createControllerWithRepository()
574+
controller.convertedObjectIDs(
575+
eventName = eventA,
576+
objectIDs = objectIDs,
577+
)
578+
val stored = repo.read()
579+
assertEquals(1, stored.size)
580+
assertEquals("test-index", stored[0].indexName)
581+
}
465582
}

‎instantsearch-insights/src/commonMain/kotlin/com/algolia/instantsearch/insights/internal/InsightsController.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ internal class InsightsController(
126126
val builder = InsightsEventDO.Builder().apply {
127127
this.eventType = eventType
128128
this.eventName = eventName
129-
this.indexName = indexName
129+
this.indexName = this@InsightsController.indexName
130130
this.userToken = userTokenOrGenerate()
131131
this.timestamp = timestamp
132132
this.queryID = queryID

0 commit comments

Comments
 (0)