From ed5c2f60cdbe0092ae7e258c1a4617adc8208146 Mon Sep 17 00:00:00 2001 From: shashank-0-0 Date: Sat, 27 Jul 2024 18:51:00 +0530 Subject: [PATCH] fixed: Getcontent Shortcut breaks the bottom nav issue --- .../shortcuts/GetContentShortcutTest.kt | 135 ++++++++++++++++++ .../kiwixmobile/main/KiwixMainActivity.kt | 5 +- 2 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 app/src/androidTest/java/org/kiwix/kiwixmobile/shortcuts/GetContentShortcutTest.kt diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/shortcuts/GetContentShortcutTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/shortcuts/GetContentShortcutTest.kt new file mode 100644 index 000000000..4c97a13e0 --- /dev/null +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/shortcuts/GetContentShortcutTest.kt @@ -0,0 +1,135 @@ +/* + * Kiwix Android + * Copyright (c) 2024 Kiwix + * 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 org.kiwix.kiwixmobile.shortcuts + +import android.app.Instrumentation +import android.content.Intent +import androidx.core.content.edit +import androidx.lifecycle.Lifecycle +import androidx.preference.PreferenceManager +import androidx.test.core.app.ActivityScenario +import androidx.test.espresso.accessibility.AccessibilityChecks +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.uiautomator.UiDevice +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange +import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil +import org.kiwix.kiwixmobile.help.HelpRobot +import org.kiwix.kiwixmobile.localFileTransfer.LocalFileTransferRobot +import org.kiwix.kiwixmobile.main.ACTION_GET_CONTENT +import org.kiwix.kiwixmobile.main.KiwixMainActivity +import org.kiwix.kiwixmobile.main.topLevel +import org.kiwix.kiwixmobile.nav.destination.library.OnlineLibraryRobot +import org.kiwix.kiwixmobile.nav.destination.library.onlineLibrary +import org.kiwix.kiwixmobile.settings.SettingsRobot +import org.kiwix.kiwixmobile.testutils.RetryRule +import org.kiwix.kiwixmobile.testutils.TestUtils.closeSystemDialogs +import org.kiwix.kiwixmobile.testutils.TestUtils.isSystemUINotRespondingDialogVisible +import org.kiwix.kiwixmobile.webserver.ZimHostRobot + +@LargeTest +@RunWith(AndroidJUnit4::class) +class GetContentShortcutTest { + + @Rule + @JvmField + val retryRule = RetryRule() + + init { + AccessibilityChecks.enable().setRunChecksFromRootView(true) + } + + private val instrumentation: Instrumentation by lazy(InstrumentationRegistry::getInstrumentation) + + @Before + fun setUp() { + UiDevice.getInstance(instrumentation).apply { + if (isSystemUINotRespondingDialogVisible(this)) { + closeSystemDialogs(instrumentation.targetContext.applicationContext, this) + } + waitForIdle() + } + PreferenceManager.getDefaultSharedPreferences( + instrumentation.targetContext.applicationContext + ).edit { + putBoolean(SharedPreferenceUtil.PREF_SHOW_INTRO, false) + putBoolean(SharedPreferenceUtil.PREF_WIFI_ONLY, false) + putBoolean(SharedPreferenceUtil.PREF_IS_TEST, true) + putBoolean(SharedPreferenceUtil.PREF_EXTERNAL_LINK_POPUP, true) + putBoolean(SharedPreferenceUtil.PREF_SHOW_SHOWCASE, false) + putString(SharedPreferenceUtil.PREF_LANG, "en") + putLong( + SharedPreferenceUtil.PREF_LAST_DONATION_POPUP_SHOWN_IN_MILLISECONDS, + System.currentTimeMillis() + ) + } + ActivityScenario.launch(KiwixMainActivity::class.java).apply { + moveToState(Lifecycle.State.RESUMED) + onActivity { + handleLocaleChange( + it, + "en", + SharedPreferenceUtil(instrumentation.targetContext.applicationContext) + ) + } + } + } + + @Test + fun testHandleGetContentShortcut() { + val shortcutIntent = Intent( + InstrumentationRegistry.getInstrumentation().targetContext, + KiwixMainActivity::class.java + ).apply { + action = ACTION_GET_CONTENT + } + ActivityScenario.launch(shortcutIntent) + onlineLibrary(OnlineLibraryRobot::assertLibraryListDisplayed) + topLevel { + clickReaderOnBottomNav { + } + clickDownloadOnBottomNav(OnlineLibraryRobot::assertLibraryListDisplayed) + clickLibraryOnBottomNav { + assertGetZimNearbyDeviceDisplayed() + clickFileTransferIcon(LocalFileTransferRobot::assertReceiveFileTitleVisible) + } + clickBookmarksOnNavDrawer { + assertBookMarksDisplayed() + clickOnTrashIcon() + assertDeleteBookmarksDialogDisplayed() + } + clickHistoryOnSideNav { + assertHistoryDisplayed() + clickOnTrashIcon() + assertDeleteHistoryDialogDisplayed() + } + clickHostBooksOnSideNav(ZimHostRobot::assertMenuWifiHotspotDiplayed) + clickSettingsOnSideNav(SettingsRobot::assertMenuSettingsDisplayed) + clickHelpOnSideNav(HelpRobot::assertToolbarDisplayed) + clickSupportKiwixOnSideNav() + assertExternalLinkDialogDisplayed() + pressBack() + } + } +} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt index ea8592def..d562b38b2 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt @@ -36,6 +36,7 @@ import androidx.drawerlayout.widget.DrawerLayout import androidx.navigation.NavController import androidx.navigation.NavDestination import androidx.navigation.fragment.NavHostFragment +import androidx.navigation.ui.NavigationUI import androidx.navigation.ui.setupWithNavController import com.google.android.material.navigation.NavigationView import eu.mhutti1.utils.storage.StorageDeviceUtils @@ -227,7 +228,9 @@ class KiwixMainActivity : CoreMainActivity() { private fun handleGetContentIntent(intent: Intent?) { if (intent?.action == ACTION_GET_CONTENT) { - navigate(R.id.downloadsFragment) + activityKiwixMainBinding.bottomNavView.menu.findItem(R.id.downloadsFragment)?.let { + NavigationUI.onNavDestinationSelected(it, navController) + } } }