package com.yorvana.ui.util

import android.app.Activity
import android.content.Context
import android.content.ContextWrapper
import com.google.common.truth.Truth.assertThat
import io.mockk.mockk
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config

@RunWith(RobolectricTestRunner::class)
@Config(sdk = [33])
class ContextExtensionsTest {
    @Test
    fun `findActivity should return activity when context is activity`() {
        val activity = Robolectric.buildActivity(Activity::class.java).get()
        assertThat(activity.findActivity()).isEqualTo(activity)
    }

    @Test
    fun `findActivity should return activity when context is wrapped activity`() {
        val activity = Robolectric.buildActivity(Activity::class.java).get()
        val wrapped = ContextWrapper(activity)
        val doubleWrapped = ContextWrapper(wrapped)
        assertThat(doubleWrapped.findActivity()).isEqualTo(activity)
    }

    @Test
    fun `findActivity should return null when context is not an activity`() {
        val context = mockk<Context>()
        assertThat(context.findActivity()).isNull()
    }
}
