Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ import androidx.test.ext.junit.rules.activityScenarioRule
import com.itsaky.androidide.activities.SplashActivity
import com.itsaky.androidide.scenarios.InitializationProjectAndCancelingBuildScenario
import com.itsaky.androidide.scenarios.NavigateToMainScreenScenario
import com.itsaky.androidide.screens.HomeScreen.clickCreateProject
import com.itsaky.androidide.screens.HomeScreen.clickCreateProjectHomeScreen
import com.itsaky.androidide.screens.ProjectSettingsScreen.clickCreateProjectProjectSettings
import com.itsaky.androidide.screens.ProjectSettingsScreen.selectJavaLanguage
import com.itsaky.androidide.screens.ProjectSettingsScreen.selectKotlinLanguage
import com.itsaky.androidide.screens.TemplateScreen.selectTemplate
import com.kaspersky.kaspresso.testcases.api.testcase.TestCase
import com.kaspersky.kaspresso.testcases.core.testcontext.TestContext
import org.junit.Rule
import org.junit.Test

Expand All @@ -20,68 +22,96 @@ class ProjectBuildTest : TestCase() {
@Test
fun test_projectBuild_baseProject_java() {
run {
step("Initialize the app") {
scenario(NavigateToMainScreenScenario())
}
clickCreateProject()
navigateToMainScreen()
clickCreateProjectHomeScreen()
step("Select the basic project") {
selectTemplate(R.string.template_basic)
}
selectJavaLanguage()
step("Initialization the project and cancelling the build") {
scenario(InitializationProjectAndCancelingBuildScenario())
}
clickCreateProjectProjectSettings()
initializeProjectAndCancelBuild()
}
}

@Test
fun test_projectBuild_baseProject_kotlin() {
run {
step("Initialize the app") {
scenario(NavigateToMainScreenScenario())
}
clickCreateProject()
navigateToMainScreen()
clickCreateProjectHomeScreen()
step("Select the basic project") {
selectTemplate(R.string.template_basic)
}
selectKotlinLanguage()
step("Initialization the project and cancelling the build") {
scenario(InitializationProjectAndCancelingBuildScenario())
}
clickCreateProjectProjectSettings()
initializeProjectAndCancelBuild()
}
}

@Test
fun test_projectBuild_navigationDrawerProject_java() {
run {
step("Initialize the app") {
scenario(NavigateToMainScreenScenario())
}
clickCreateProject()
navigateToMainScreen()
clickCreateProjectHomeScreen()
step("Select the navigation drawer project") {
selectTemplate(R.string.template_navigation_drawer)
}
selectJavaLanguage()
step("Initialization the project and cancelling the build") {
scenario(InitializationProjectAndCancelingBuildScenario())
}
clickCreateProjectProjectSettings()
initializeProjectAndCancelBuild()
}
}

@Test
fun test_projectBuild_navigationDrawerProject_kotlin() {
run {
step("Initialize the app") {
scenario(NavigateToMainScreenScenario())
}
clickCreateProject()
navigateToMainScreen()
clickCreateProjectHomeScreen()
step("Select the navigation drawer project") {
selectTemplate(R.string.template_navigation_drawer)
}
selectKotlinLanguage()
step("Initialization the project and cancelling the build") {
scenario(InitializationProjectAndCancelingBuildScenario())
clickCreateProjectProjectSettings()
initializeProjectAndCancelBuild()
}
}

@Test
fun test_projectBuild_bottomNavigationProject_java() {
run {
navigateToMainScreen()
clickCreateProjectHomeScreen()
step("Select the navigation drawer project") {
selectTemplate(R.string.template_navigation_tabs)
}
selectJavaLanguage()
clickCreateProjectProjectSettings()
initializeProjectAndCancelBuild()
}
}

@Test
fun test_projectBuild_bottomNavigationProject_kotlin() {
run {
navigateToMainScreen()
clickCreateProjectHomeScreen()
step("Select the navigation drawer project") {
selectTemplate(R.string.template_navigation_tabs)
}
selectKotlinLanguage()
clickCreateProjectProjectSettings()
initializeProjectAndCancelBuild()
}
}

private fun TestContext<Unit>.navigateToMainScreen() {
step("Initialize the app and navigate to the Main Screen") {
scenario(NavigateToMainScreenScenario())
}
}

private fun TestContext<Unit>.initializeProjectAndCancelBuild() {
step("Initialization the project and cancelling the build") {
scenario(InitializationProjectAndCancelingBuildScenario())
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ object HomeScreen : KScreen<HomeScreen>() {
val button = KButton(matcher) { withId(R.id.itemButton) }
}

fun TestContext<Unit>.clickCreateProject() {
fun TestContext<Unit>.clickCreateProjectHomeScreen() {
step("Click create project") {
flakySafely(60000) {
HomeScreen {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,6 @@ object ProjectSettingsScreen : KScreen<ProjectSettingsScreen>() {
click()
}
}

createProjectButton {
isVisible()
click()
}
}
}
}
Expand All @@ -59,13 +54,17 @@ object ProjectSettingsScreen : KScreen<ProjectSettingsScreen>() {
click()
}
}

createProjectButton {
isVisible()
click()
}
}
}
}
}

fun TestContext<Unit>.clickCreateProjectProjectSettings() {
step("Click create project on the Settings Page") {
createProjectButton {
isVisible()
click()
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.itsaky.androidide.databinding.LayoutMainActionItemBinding
import com.itsaky.androidide.fragments.MainFragment
import com.itsaky.androidide.models.MainScreenAction

/**
Expand All @@ -31,33 +30,33 @@ import com.itsaky.androidide.models.MainScreenAction
*/
class MainActionsListAdapter
@JvmOverloads
constructor(val mainFragment : MainFragment, val actions: List<MainScreenAction> = emptyList()) :
RecyclerView.Adapter<MainActionsListAdapter.VH>() {
inner class VH(val binding: LayoutMainActionItemBinding) : RecyclerView.ViewHolder(binding.root)

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
VH(LayoutMainActionItemBinding.inflate(LayoutInflater.from(parent.context), parent, false))

override fun getItemCount(): Int = actions.size

fun getAction(index: Int) = actions[index]

override fun onBindViewHolder(holder: VH, position: Int) {
val action = getAction(index = position)
val binding = holder.binding
val button = binding.root

binding.root.apply {
setText(action.text)
setIconResource(action.icon)
setOnClickListener {
action.onClick?.invoke(action, it)
}
setOnLongClickListener {
action.onLongClick?.invoke(action, it)
true
}
action.view = button
constructor(val actions: List<MainScreenAction> = emptyList()) :
RecyclerView.Adapter<MainActionsListAdapter.VH>() {
inner class VH(val binding: LayoutMainActionItemBinding) : RecyclerView.ViewHolder(binding.root)

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
VH(LayoutMainActionItemBinding.inflate(LayoutInflater.from(parent.context), parent, false))

override fun getItemCount(): Int = actions.size

fun getAction(index: Int) = actions[index]

override fun onBindViewHolder(holder: VH, position: Int) {
val action = getAction(index = position)
val binding = holder.binding
val button = binding.root

binding.root.apply {
setText(action.text)
setIconResource(action.icon)
setOnClickListener {
action.onClick?.invoke(action, it)
}
setOnLongClickListener {
action.onLongClick?.invoke(action, it)
true
}
action.view = button
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package com.itsaky.androidide.fragments
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
Expand Down Expand Up @@ -68,8 +66,6 @@ class MainFragment : BaseFragment() {
// There are no request codes
}

private val handler: Handler = Handler(Looper.getMainLooper())

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
Expand Down Expand Up @@ -117,7 +113,7 @@ class MainFragment : BaseFragment() {
}
}

binding!!.actions.adapter = MainActionsListAdapter(this, actions)
binding!!.actions.adapter = MainActionsListAdapter(actions)
binding!!.greetingText.setOnClickListener {
TooltipUtils.showWebPage(
requireContext(),
Expand Down