package com.contentsquare.rn.csq import android.content.Context import com.contentsquare.CSQ import com.contentsquare.api.model.ProductAnalyticsOptions import com.contentsquare.rn.utils.ReactNativeUiThreadUtil import com.facebook.react.bridge.ReactApplicationContext import io.mockk.every import io.mockk.mockk import io.mockk.mockkStatic import io.mockk.slot import io.mockk.unmockkAll import io.mockk.verify import org.junit.After import org.junit.Before import org.junit.Test class CSQInitializationTest { private val mockReactContext: ReactApplicationContext = mockk() private val mockApplicationContext: Context = mockk(); private val mockReactNativeUiThreadUtil: ReactNativeUiThreadUtil = mockk() private lateinit var underTest: CSQInitialization @Before fun setup() { val slot = slot() every { mockReactNativeUiThreadUtil.runOnUiThread(capture(slot)) } answers { slot.captured.run() Unit } underTest = CSQInitialization(mockReactContext, mockReactNativeUiThreadUtil) } @After fun tearDown() { unmockkAll() } @Test fun `start should call CSQ start with proper context`() { // Given mockkStatic(CSQ::class) every { CSQ.start(any()) } returns Unit every { mockReactContext.applicationContext } returns mockApplicationContext // When underTest.start() // Then verify { CSQ.start(mockApplicationContext) } } @Test fun `configureProductAnalytics should call CSQ configureProductAnalytics with proper parameters`() { // Given mockkStatic(CSQ::class) every { CSQ.configureProductAnalytics(any(), any(), any()) } returns Unit val envId = "2628368288" val mockOptions = mockk() // When underTest.configureProductAnalytics(envId, mockOptions) // Then verify { CSQ.configureProductAnalytics(mockReactContext, envId, mockOptions) } } }