package com.example.iplace

import androidx.compose.runtime.Composable
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithContentDescription
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.example.iplace.main.viewModel.View
import com.example.iplace.main.viewModel.dataView.SplashScreen
import com.example.iplace.main.viewModel.mainView.Auth

import org.junit.Test
import org.junit.runner.RunWith

import org.junit.Assert.*
import org.junit.Rule
import org.mockito.Mockito

/**
 * Instrumented test, which will execute on an Android device.
 *
 * See [testing documentation](http://d.android.com/tools/testing).
 */
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {

    @Test
    fun useAppContext() {
        // Context of the app under test.
        val appContext = InstrumentationRegistry.getInstrumentation().targetContext
        assertEquals("com.example.iplace", appContext.packageName)
    }
    @get:Rule
    val composeTestRule = createComposeRule()

    @Test
    fun SignUpscreenisdisplayed() {
        composeTestRule.setContent {
            Auth(rememberNavController())
        }
        // Проверяем, что экран регистрации отображается
        /*        composeTestRule.onNodeWithText("Email").assertIsDisplayed()
                composeTestRule.onNodeWithText("Password").assertIsDisplayed()*/
        composeTestRule.onNodeWithText("Авторизация").assertIsDisplayed()
    }

    @Test
    fun myComposableTest() {
        composeTestRule.setContent {
            SplashScreen(rememberNavController()) // Ваш Composable, который вы хотите протестировать
        }

        composeTestRule.onNodeWithText("Добро пожаловать в I.Place").assertIsDisplayed()

    }
    @Test
    fun test_navigate_to_selectEnter_screen() {
        //val navController = Mockito.mock(NavHostController::class.java)
        composeTestRule.setContent {
            Auth(rememberNavController())
        }

        composeTestRule.onNodeWithText("Авторизация").assertExists()
        composeTestRule.onNodeWithContentDescription("Назад").performClick()

        //Mockito.verify(navController).navigate("selectEnter")
    }

//    @Composable
//    @Test
//    fun test_email_input_field() {
//        val navController = rememberNavController()
//        composeTestRule.setContent {
//            Auth(navController)
//        }
//
//        composeTestRule.onNodeWithText("Логин").assertExists()
//        composeTestRule.onNodeWithText("Логин").performClick() // фокус на поле ввода
//        // Здесь можно добавить проверку на ввод текста в поле email
//        // Например, ввод текста и проверка его отображения
//    }
}