1
0
mirror of https://github.com/AllanWang/Frost-for-Facebook.git synced 2024-09-19 15:11:42 +02:00

Test remaining activities

This commit is contained in:
Allan Wang 2021-09-13 21:29:58 -07:00
parent 47fcc3a294
commit f5c5b17040
No known key found for this signature in database
GPG Key ID: 69D90B885D405BDB
3 changed files with 157 additions and 20 deletions

View File

@ -1,24 +1,158 @@
/*
* 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 <http://www.gnu.org/licenses/>.
*/
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)
@Test
fun imageActivity() {
launch<ImageActivity>()
@Before
fun before() {
hiltRule.inject()
}
private inline fun <reified A : Activity> launch(activityOptions: Bundle? = null) =
ActivityScenario.launch(A::class.java, activityOptions)
}
@Test
fun aboutActivity() {
launch<AboutActivity>()
}
@Test
fun debugActivity() {
launch<DebugActivity>()
}
@Test
fun frostWebActivity() {
launch<FrostWebActivity>(
intentAction = {
putExtra(ARG_URL, FORMATTED_URL)
}
)
}
@Test
fun imageActivity() {
launch<ImageActivity>(
intentAction = {
putExtra(ARG_IMAGE_URL, FORMATTED_URL)
}
)
}
@Test
@Ignore("Doesn't work, yet production is fine.")
fun introActivity() {
launch<IntroActivity>()
}
@Test
fun loginActivity() {
launch<LoginActivity>()
}
@Test
fun mainActivity() {
launch<MainActivity>()
}
@Test
fun selectorActivity() {
launch<SelectorActivity>()
}
@Test
fun settingsActivity() {
launch<SettingsActivity>()
}
@Test
fun startActivity() {
launch<StartActivity>()
}
@Test
fun tabCustomizerActivity() {
launch<TabCustomizerActivity>()
}
@Test
fun webOverlayMobileActivity() {
launch<WebOverlayMobileActivity>(
intentAction = {
putExtra(ARG_URL, FORMATTED_URL)
}
)
}
@Test
fun webOverlayDesktopActivity() {
launch<WebOverlayDesktopActivity>(
intentAction = {
putExtra(ARG_URL, FORMATTED_URL)
}
)
}
@Test
fun webOverlayActivity() {
launch<WebOverlayActivity>(
intentAction = {
putExtra(ARG_URL, FORMATTED_URL)
}
)
}
private inline fun <reified A : Activity> launch(
intentAction: Intent.() -> Unit = {},
activityOptions: Bundle? = null
): ActivityScenario<A> {
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"
}
}

View File

@ -227,11 +227,11 @@ class ImageActivity : KauBaseActivity() {
setState(FabStates.SHARE)
}
imagePhoto.setOnImageEventListener(object :
SubsamplingScaleImageView.DefaultOnImageEventListener() {
override fun onImageLoadError(e: Exception) {
loadError(e)
}
})
SubsamplingScaleImageView.DefaultOnImageEventListener() {
override fun onImageLoadError(e: Exception) {
loadError(e)
}
})
activityThemer.setFrostColors {
themeWindow = false
}

View File

@ -28,6 +28,7 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import androidx.viewpager.widget.ViewPager
import ca.allanwang.kau.internal.KauBaseActivity
import ca.allanwang.kau.kotlin.lazyUi
import ca.allanwang.kau.utils.blendWith
import ca.allanwang.kau.utils.color
import ca.allanwang.kau.utils.fadeScaleTransition
@ -82,14 +83,16 @@ class IntroActivity :
lateinit var binding: ActivityIntroBinding
private var barHasNext = true
val fragments = listOf(
IntroFragmentWelcome(),
IntroFragmentTheme(),
IntroAccountFragment(),
IntroTabTouchFragment(),
IntroTabContextFragment(),
IntroFragmentEnd()
)
private val fragments by lazyUi {
listOf(
IntroFragmentWelcome(),
IntroFragmentTheme(),
IntroAccountFragment(),
IntroTabTouchFragment(),
IntroTabContextFragment(),
IntroFragmentEnd()
)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -130,7 +133,7 @@ class IntroActivity :
/**
* Transformations are mainly handled on a per view basis
* This sifies it by making the first fragment fade out as the second fragment comes in
* This makes the first fragment fade out as the second fragment comes in
* All fragments are locked in position
*/
override fun transformPage(page: View, position: Float) {