package com.yorvana.testsupport

import android.content.Context
import android.content.Intent
import androidx.test.espresso.intent.Intents
import androidx.test.espresso.intent.matcher.IntentMatchers.hasAction
import org.junit.Assume.assumeTrue

object ExternalViewer {
    fun hasResolver(
        context: Context,
        intent: Intent,
    ): Boolean = intent.resolveActivity(context.packageManager) != null

    fun assertLaunchOrSkipUi(
        context: Context,
        intent: Intent,
    ) {
        // Probe only by MIME/action so tests skip on viewer-less managed images before
        // asserting the real app launch that carries the content URI grant.
        assumeTrue("No external viewer resolves ${intent.type ?: intent.action}", hasResolver(context, intent))
        Intents.intended(hasAction(intent.action))
    }
}
