/*
* Copyright 2021 Allan Wang
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
package com.pitchedapps.frost.activities
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.test.core.app.ActivityScenario
import com.pitchedapps.frost.StartActivity
import com.pitchedapps.frost.utils.ARG_IMAGE_URL
import com.pitchedapps.frost.utils.ARG_URL
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.testing.HiltAndroidRule
import dagger.hilt.android.testing.HiltAndroidTest
import org.junit.Before
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import javax.inject.Inject
/**
* Basic activity launching tests.
*
* Verifies that Hilt injections are not used prior to onCreate
*/
@HiltAndroidTest
class ActivityConstructionTest {
@ApplicationContext
@Inject
lateinit var appContext: Context
@get:Rule
val hiltRule = HiltAndroidRule(this)
@Before
fun before() {
hiltRule.inject()
}
@Test
fun aboutActivity() {
launch()
}
@Test
fun debugActivity() {
launch()
}
@Test
fun frostWebActivity() {
launch(
intentAction = {
putExtra(ARG_URL, FORMATTED_URL)
}
)
}
@Test
fun imageActivity() {
launch(
intentAction = {
putExtra(ARG_IMAGE_URL, FORMATTED_URL)
}
)
}
@Test
@Ignore("Doesn't work, yet production is fine.")
fun introActivity() {
launch()
}
@Test
fun loginActivity() {
launch()
}
@Test
fun mainActivity() {
launch()
}
@Test
fun selectorActivity() {
launch()
}
@Test
fun settingsActivity() {
launch()
}
@Test
fun startActivity() {
launch()
}
@Test
fun tabCustomizerActivity() {
launch()
}
@Test
fun webOverlayMobileActivity() {
launch(
intentAction = {
putExtra(ARG_URL, FORMATTED_URL)
}
)
}
@Test
fun webOverlayDesktopActivity() {
launch(
intentAction = {
putExtra(ARG_URL, FORMATTED_URL)
}
)
}
@Test
fun webOverlayActivity() {
launch(
intentAction = {
putExtra(ARG_URL, FORMATTED_URL)
}
)
}
private inline fun launch(
intentAction: Intent.() -> Unit = {},
activityOptions: Bundle? = null
): ActivityScenario {
val intent = Intent(appContext, A::class.java).also(intentAction)
return ActivityScenario.launch(intent, activityOptions)
}
private companion object {
const val FORMATTED_URL = "https://www.google.com"
}
}