package com.yorvana.ui.navigation

import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.onRoot
import androidx.compose.ui.test.performClick
import com.yorvana.ui.TestTags
import com.yorvana.ui.theme.YorvanaTheme
import com.yorvana.ui.util.BaseScreenshotTest
import org.junit.Rule
import org.junit.Test

class SetupScreenshotTest : BaseScreenshotTest() {
    @get:Rule
    val composeTestRule = createComposeRule()

    @Test
    fun setup_step1_folder() {
        composeTestRule.setContent {
            YorvanaTheme(dynamicColor = false) {
                SetupScreen()
            }
        }
        composeTestRule.onRoot().captureScreen("SetupScreen_step1_folder")
    }

    @Test
    fun setup_step2_sentry_off() {
        composeTestRule.setContent {
            YorvanaTheme(dynamicColor = false) {
                SetupStepSentry(enabled = false, onEnabledChange = {}, onComplete = {})
            }
        }
        composeTestRule.onRoot().captureScreen("SetupScreen_step2_sentry_off")
    }

    @Test
    fun setup_step2_sentry_on() {
        composeTestRule.setContent {
            YorvanaTheme(dynamicColor = false) {
                SetupStepSentry(enabled = true, onEnabledChange = {}, onComplete = {})
            }
        }
        composeTestRule.onRoot().captureScreen("SetupScreen_step2_sentry_on")
    }

    @Test
    fun setup_step2_with_topbar() {
        composeTestRule.setContent {
            YorvanaTheme(dynamicColor = false) {
                SetupStep2Scaffold(onBack = {}) {
                    SetupStepSentry(enabled = true, onEnabledChange = {}, onComplete = {})
                }
            }
        }
        composeTestRule.onRoot().captureScreen("SetupScreen_step2_with_topbar")
    }

    @Test
    fun setup_step2_sentry_privacy_dialog() {
        composeTestRule.setContent {
            YorvanaTheme(dynamicColor = false) {
                SetupStepSentry(enabled = true, onEnabledChange = {}, onComplete = {})
            }
        }
        composeTestRule.waitForIdle()
        composeTestRule.onNodeWithTag(TestTags.PRIVACY_LEARN_MORE).performClick()
        composeTestRule.waitForIdle()
        captureFull("SetupScreen_step2_sentry_privacy_dialog")
    }
}
