diff --git a/app/src/androidTest/java/com/akexorcist/localizationapp/DarkThemeTest.kt b/app/src/androidTest/java/com/akexorcist/localizationapp/DarkThemeTest.kt index 154343a..0f01432 100644 --- a/app/src/androidTest/java/com/akexorcist/localizationapp/DarkThemeTest.kt +++ b/app/src/androidTest/java/com/akexorcist/localizationapp/DarkThemeTest.kt @@ -1,271 +1,271 @@ package com.akexorcist.localizationapp -import android.os.Build -import androidx.test.ext.junit.rules.ActivityScenarioRule -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice -import androidx.test.uiautomator.UiSelector -import com.agoda.kakao.screen.Screen.Companion.onScreen -import com.akexorcist.localizationapp.annotation.TargetApiLevel -import com.akexorcist.localizationapp.data.ExpectedContent -import com.akexorcist.localizationapp.runner.AndroidSdkLevel29TestRunner -import com.akexorcist.localizationapp.screen.MainActivityScreen -import com.akexorcist.localizationapp.screen.SimpleFragmentScreen -import org.junit.Ignore -import org.junit.Rule -import org.junit.Test -import org.junit.runner.RunWith +//import android.os.Build +//import androidx.test.ext.junit.rules.ActivityScenarioRule +//import androidx.test.platform.app.InstrumentationRegistry +//import androidx.test.uiautomator.UiDevice +//import androidx.test.uiautomator.UiSelector +//import com.agoda.kakao.screen.Screen.Companion.onScreen +//import com.akexorcist.localizationapp.annotation.TargetApiLevel +//import com.akexorcist.localizationapp.data.ExpectedContent +//import com.akexorcist.localizationapp.runner.AndroidSdkLevel29TestRunner +//import com.akexorcist.localizationapp.screen.MainActivityScreen +//import com.akexorcist.localizationapp.screen.SimpleFragmentScreen +//import org.junit.Ignore +//import org.junit.Rule +//import org.junit.Test +//import org.junit.runner.RunWith +// - -@RunWith(AndroidSdkLevel29TestRunner::class) -class DarkThemeTest { - @JvmField - val uiDevices: UiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) - - @Rule - @JvmField - val rule = ActivityScenarioRule(MainActivity::class.java) - - @Test - @TargetApiLevel(Build.VERSION_CODES.Q) - @Ignore("For local running only, dark theme in quick settings panel is required") - fun darkTheme() { - onScreen { - buttonDarkTheme { - scrollTo() - click() - } - } - // Chinese - onScreen { - buttonChinese { - scrollTo() - click() - } - textViewContent { - hasText(ExpectedContent.APPLE_CHINESE) - } - } - uiDevices.openQuickSettings() - uiDevices.findObject(UiSelector().text("Dark theme")).click() - uiDevices.pressBack() - uiDevices.pressBack() - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_CHINESE) - } - pressBack() - } - onScreen { - textViewTitle { - hasText(ExpectedContent.HELLO_WORLD_CHINESE) - uiDevices.setOrientationNatural() - hasText(ExpectedContent.HELLO_WORLD_CHINESE) - } - buttonDarkTheme { - scrollTo() - click() - } - } - // Italian - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_CHINESE) - } - buttonItalian { - scrollTo() - click() - } - textViewContent { - hasText(ExpectedContent.APPLE_ITALIAN) - } - } - uiDevices.openQuickSettings() - uiDevices.findObject(UiSelector().text("Dark theme")).click() - uiDevices.pressBack() - uiDevices.pressBack() - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_ITALIAN) - } - pressBack() - } - onScreen { - textViewTitle { - hasText(ExpectedContent.HELLO_WORLD_ITALIAN) - uiDevices.setOrientationNatural() - hasText(ExpectedContent.HELLO_WORLD_ITALIAN) - } - buttonDarkTheme { - scrollTo() - click() - } - } - // Japanese - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_ITALIAN) - } - buttonJapanese { - scrollTo() - click() - } - textViewContent { - hasText(ExpectedContent.APPLE_JAPANESE) - } - } - uiDevices.openQuickSettings() - uiDevices.findObject(UiSelector().text("Dark theme")).click() - uiDevices.pressBack() - uiDevices.pressBack() - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_JAPANESE) - } - pressBack() - } - onScreen { - textViewTitle { - hasText(ExpectedContent.HELLO_WORLD_JAPANESE) - uiDevices.setOrientationNatural() - hasText(ExpectedContent.HELLO_WORLD_JAPANESE) - } - buttonDarkTheme { - scrollTo() - click() - } - } - // Korean - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_JAPANESE) - } - buttonKorean { - scrollTo() - click() - } - textViewContent { - hasText(ExpectedContent.APPLE_KOREAN) - } - } - uiDevices.openQuickSettings() - uiDevices.findObject(UiSelector().text("Dark theme")).click() - uiDevices.pressBack() - uiDevices.pressBack() - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_KOREAN) - } - pressBack() - } - onScreen { - textViewTitle { - hasText(ExpectedContent.HELLO_WORLD_KOREAN) - uiDevices.setOrientationNatural() - hasText(ExpectedContent.HELLO_WORLD_KOREAN) - } - buttonDarkTheme { - scrollTo() - click() - } - } - // Portuguese - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_KOREAN) - } - buttonPortuguese { - scrollTo() - click() - } - textViewContent { - hasText(ExpectedContent.APPLE_PORTUGUESE) - } - } - uiDevices.openQuickSettings() - uiDevices.findObject(UiSelector().text("Dark theme")).click() - uiDevices.pressBack() - uiDevices.pressBack() - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_PORTUGUESE) - } - pressBack() - } - onScreen { - textViewTitle { - hasText(ExpectedContent.HELLO_WORLD_PORTUGUESE) - uiDevices.setOrientationNatural() - hasText(ExpectedContent.HELLO_WORLD_PORTUGUESE) - } - buttonDarkTheme { - scrollTo() - click() - } - } - // Thai - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_PORTUGUESE) - } - buttonThai { - scrollTo() - click() - } - textViewContent { - hasText(ExpectedContent.APPLE_THAI) - } - } - uiDevices.openQuickSettings() - uiDevices.findObject(UiSelector().text("Dark theme")).click() - uiDevices.pressBack() - uiDevices.pressBack() - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_THAI) - } - pressBack() - } - onScreen { - textViewTitle { - hasText(ExpectedContent.HELLO_WORLD_THAI) - uiDevices.setOrientationNatural() - hasText(ExpectedContent.HELLO_WORLD_THAI) - } - buttonDarkTheme { - scrollTo() - click() - } - } - // American - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_THAI) - } - buttonAmerican { - scrollTo() - click() - } - textViewContent { - hasText(ExpectedContent.APPLE_AMERICAN) - } - } - uiDevices.openQuickSettings() - uiDevices.findObject(UiSelector().text("Dark theme")).click() - uiDevices.pressBack() - uiDevices.pressBack() - onScreen { - textViewContent { - hasText(ExpectedContent.APPLE_AMERICAN) - } - pressBack() - } - onScreen { - textViewTitle { - hasText(ExpectedContent.HELLO_WORLD_AMERICAN) - uiDevices.setOrientationNatural() - hasText(ExpectedContent.HELLO_WORLD_AMERICAN) - } - } - } -} +//@RunWith(AndroidSdkLevel29TestRunner::class) +//class DarkThemeTest { +// @JvmField +// val uiDevices: UiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) +// +// @Rule +// @JvmField +// val rule = ActivityScenarioRule(MainActivity::class.java) +// +// @Test +// @TargetApiLevel(Build.VERSION_CODES.Q) +// @Ignore("For local running only, dark theme in quick settings panel is required") +// fun darkTheme() { +// onScreen { +// buttonDarkTheme { +// scrollTo() +// click() +// } +// } +// // Chinese +// onScreen { +// buttonChinese { +// scrollTo() +// click() +// } +// textViewContent { +// hasText(ExpectedContent.APPLE_CHINESE) +// } +// } +// uiDevices.openQuickSettings() +// uiDevices.findObject(UiSelector().text("Dark theme")).click() +// uiDevices.pressBack() +// uiDevices.pressBack() +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_CHINESE) +// } +// pressBack() +// } +// onScreen { +// textViewTitle { +// hasText(ExpectedContent.HELLO_WORLD_CHINESE) +// uiDevices.setOrientationNatural() +// hasText(ExpectedContent.HELLO_WORLD_CHINESE) +// } +// buttonDarkTheme { +// scrollTo() +// click() +// } +// } +// // Italian +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_CHINESE) +// } +// buttonItalian { +// scrollTo() +// click() +// } +// textViewContent { +// hasText(ExpectedContent.APPLE_ITALIAN) +// } +// } +// uiDevices.openQuickSettings() +// uiDevices.findObject(UiSelector().text("Dark theme")).click() +// uiDevices.pressBack() +// uiDevices.pressBack() +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_ITALIAN) +// } +// pressBack() +// } +// onScreen { +// textViewTitle { +// hasText(ExpectedContent.HELLO_WORLD_ITALIAN) +// uiDevices.setOrientationNatural() +// hasText(ExpectedContent.HELLO_WORLD_ITALIAN) +// } +// buttonDarkTheme { +// scrollTo() +// click() +// } +// } +// // Japanese +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_ITALIAN) +// } +// buttonJapanese { +// scrollTo() +// click() +// } +// textViewContent { +// hasText(ExpectedContent.APPLE_JAPANESE) +// } +// } +// uiDevices.openQuickSettings() +// uiDevices.findObject(UiSelector().text("Dark theme")).click() +// uiDevices.pressBack() +// uiDevices.pressBack() +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_JAPANESE) +// } +// pressBack() +// } +// onScreen { +// textViewTitle { +// hasText(ExpectedContent.HELLO_WORLD_JAPANESE) +// uiDevices.setOrientationNatural() +// hasText(ExpectedContent.HELLO_WORLD_JAPANESE) +// } +// buttonDarkTheme { +// scrollTo() +// click() +// } +// } +// // Korean +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_JAPANESE) +// } +// buttonKorean { +// scrollTo() +// click() +// } +// textViewContent { +// hasText(ExpectedContent.APPLE_KOREAN) +// } +// } +// uiDevices.openQuickSettings() +// uiDevices.findObject(UiSelector().text("Dark theme")).click() +// uiDevices.pressBack() +// uiDevices.pressBack() +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_KOREAN) +// } +// pressBack() +// } +// onScreen { +// textViewTitle { +// hasText(ExpectedContent.HELLO_WORLD_KOREAN) +// uiDevices.setOrientationNatural() +// hasText(ExpectedContent.HELLO_WORLD_KOREAN) +// } +// buttonDarkTheme { +// scrollTo() +// click() +// } +// } +// // Portuguese +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_KOREAN) +// } +// buttonPortuguese { +// scrollTo() +// click() +// } +// textViewContent { +// hasText(ExpectedContent.APPLE_PORTUGUESE) +// } +// } +// uiDevices.openQuickSettings() +// uiDevices.findObject(UiSelector().text("Dark theme")).click() +// uiDevices.pressBack() +// uiDevices.pressBack() +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_PORTUGUESE) +// } +// pressBack() +// } +// onScreen { +// textViewTitle { +// hasText(ExpectedContent.HELLO_WORLD_PORTUGUESE) +// uiDevices.setOrientationNatural() +// hasText(ExpectedContent.HELLO_WORLD_PORTUGUESE) +// } +// buttonDarkTheme { +// scrollTo() +// click() +// } +// } +// // Thai +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_PORTUGUESE) +// } +// buttonThai { +// scrollTo() +// click() +// } +// textViewContent { +// hasText(ExpectedContent.APPLE_THAI) +// } +// } +// uiDevices.openQuickSettings() +// uiDevices.findObject(UiSelector().text("Dark theme")).click() +// uiDevices.pressBack() +// uiDevices.pressBack() +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_THAI) +// } +// pressBack() +// } +// onScreen { +// textViewTitle { +// hasText(ExpectedContent.HELLO_WORLD_THAI) +// uiDevices.setOrientationNatural() +// hasText(ExpectedContent.HELLO_WORLD_THAI) +// } +// buttonDarkTheme { +// scrollTo() +// click() +// } +// } +// // American +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_THAI) +// } +// buttonAmerican { +// scrollTo() +// click() +// } +// textViewContent { +// hasText(ExpectedContent.APPLE_AMERICAN) +// } +// } +// uiDevices.openQuickSettings() +// uiDevices.findObject(UiSelector().text("Dark theme")).click() +// uiDevices.pressBack() +// uiDevices.pressBack() +// onScreen { +// textViewContent { +// hasText(ExpectedContent.APPLE_AMERICAN) +// } +// pressBack() +// } +// onScreen { +// textViewTitle { +// hasText(ExpectedContent.HELLO_WORLD_AMERICAN) +// uiDevices.setOrientationNatural() +// hasText(ExpectedContent.HELLO_WORLD_AMERICAN) +// } +// } +// } +//} diff --git a/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltActivity.kt b/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltActivity.kt index 4a16cff..cf71cba 100644 --- a/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltActivity.kt +++ b/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltActivity.kt @@ -13,36 +13,8 @@ class HiltActivity : LocalizationActivity() { @Inject lateinit var storyProvider: StoryProvider - companion object { - private const val KEY_SCROLL_X = "scroll_x" - } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) - - binding.textViewContent.text = storyProvider.getAppleStory() - binding.btnBack.setOnClickListener { super.onBackPressed() } - binding.layoutLanguageChooser.btnAmerican.setOnClickListener { setLanguage("en") } - binding.layoutLanguageChooser.btnChinese.setOnClickListener { setLanguage("zh") } - binding.layoutLanguageChooser.btnItalian.setOnClickListener { setLanguage("it") } - binding.layoutLanguageChooser.btnJapanese.setOnClickListener { setLanguage("ja") } - binding.layoutLanguageChooser.btnKorean.setOnClickListener { setLanguage("ko") } - binding.layoutLanguageChooser.btnPortuguese.setOnClickListener { setLanguage("pt") } - binding.layoutLanguageChooser.btnThai.setOnClickListener { setLanguage("th") } - } - - public override fun onSaveInstanceState(outState: Bundle) { - // Save x-position of horizontal scroll view. - outState.putInt(KEY_SCROLL_X, binding.layoutLanguageChooser.svLanguageChooser.scrollX) - super.onSaveInstanceState(outState) - } - - public override fun onRestoreInstanceState(savedInstanceState: Bundle) { - super.onRestoreInstanceState(savedInstanceState) - // Restore x-position of horizontal scroll view. - binding.layoutLanguageChooser.svLanguageChooser.scrollTo( - savedInstanceState.getInt(KEY_SCROLL_X), 0 - ) } } diff --git a/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltFragmentWithViewModel.kt b/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltFragmentWithViewModel.kt new file mode 100644 index 0000000..36dcf50 --- /dev/null +++ b/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltFragmentWithViewModel.kt @@ -0,0 +1,69 @@ +package com.akexorcist.localizationapp.hilt + +import android.os.Bundle +import android.view.View +import android.widget.Button +import android.widget.ImageButton +import android.widget.ScrollView +import android.widget.TextView +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import com.akexorcist.localizationactivity.ui.LocalizationActivity +import com.akexorcist.localizationapp.R +import dagger.hilt.android.AndroidEntryPoint + + +@AndroidEntryPoint +class HiltFragmentWithViewModel : Fragment(R.layout.fragment_hilt) { + + private val hiltViewModel: HiltViewModel by viewModels() + + private var languageChooserScrollView: ScrollView? = null + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setupUi(view) + } + + private fun setupUi(view: View) { + languageChooserScrollView = view.findViewById(R.id.sv_language_chooser) + + view.findViewById(R.id.text_view_content).text = hiltViewModel.storyProvider.getAppleStory() + view.findViewById