Skip to content

Commit

Permalink
Merge pull request #3659 from kiwix/Fix#3627
Browse files Browse the repository at this point in the history
Fixed: Nowdays CI frequently failing on API level 24, and 33.
  • Loading branch information
kelson42 committed Jan 14, 2024
2 parents f8647de + adeabcf commit 3f19f55
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,16 @@ class ZimHostFragmentTest {
arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.NEARBY_WIFI_DEVICES
Manifest.permission.NEARBY_WIFI_DEVICES,
Manifest.permission.ACCESS_NETWORK_STATE
)
} else {
arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_NETWORK_STATE
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.espresso.matcher.ViewMatchers.assertThat
import androidx.test.espresso.matcher.ViewMatchers.withText
import applyWithViewHierarchyPrinting
import com.adevinta.android.barista.interaction.BaristaSleepInteractions
import com.adevinta.android.barista.interaction.BaristaSwipeRefreshInteractions.refresh
Expand Down Expand Up @@ -64,14 +65,21 @@ class ZimHostRobot : BaseRobot() {
}

fun clickOnTestZim() {
pauseForBetterTestPerformance()
clickOn(Text("Test_Zim"))
}

fun startServer() {
// stop the server if it is already running.
stopServerIfAlreadyStarted()
clickOn(ViewId(R.id.startServerButton))
assetWifiDialogDisplayed()
onView(withText("PROCEED")).perform(click())
}

private fun assetWifiDialogDisplayed() {
pauseForBetterTestPerformance()
isVisible(TextId(R.string.wifi_dialog_title))
clickOn(TextId(R.string.hotspot_dialog_neutral_button))
isVisible(Text("WiFi connection detected"))
}

fun assertServerStarted() {
Expand Down Expand Up @@ -110,7 +118,6 @@ class ZimHostRobot : BaseRobot() {
}

private fun selectZimFile(position: Int) {
pauseForBetterTestPerformance()
try {
onView(
RecyclerViewMatcher(R.id.recyclerViewZimHost).atPositionOnView(
Expand All @@ -119,7 +126,6 @@ class ZimHostRobot : BaseRobot() {
)
).check(matches(ViewMatchers.isChecked()))
} catch (assertionError: AssertionFailedError) {
pauseForBetterTestPerformance()
onView(
RecyclerViewMatcher(R.id.recyclerViewZimHost).atPositionOnView(
position,
Expand Down Expand Up @@ -148,6 +154,6 @@ class ZimHostRobot : BaseRobot() {
}

private fun pauseForBetterTestPerformance() {
BaristaSleepInteractions.sleep(TestUtils.TEST_PAUSE_MS_FOR_DOWNLOAD_TEST.toLong())
BaristaSleepInteractions.sleep(TestUtils.TEST_PAUSE_MS.toLong())
}
}
10 changes: 8 additions & 2 deletions contrib/instrumentation.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
#!/usr/bin/env bash

# Enable Wi-Fi on the emulator
adb shell svc wifi enable
adb logcat -c
adb logcat ./*:E -v color &
# shellcheck disable=SC2035
adb logcat *:E -v color &
retry=0
while [ $retry -le 3 ]
do
Expand All @@ -11,8 +14,11 @@ do
else
adb kill-server
adb start-server
# Enable Wi-Fi on the emulator
adb shell svc wifi enable
adb logcat -c
adb logcat ./*:E -v color &
# shellcheck disable=SC2035
adb logcat *:E -v color &
./gradlew clean
retry=$(( retry + 1 ))
if [ $retry -eq 3 ]; then
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,43 +22,47 @@ import androidx.appcompat.app.AppCompatActivity
import io.mockk.Called
import io.mockk.mockk
import io.mockk.verify
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.Test
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchDao
import org.kiwix.kiwixmobile.core.reader.ZimFileReader
import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem.RecentSearchListItem

@OptIn(ExperimentalCoroutinesApi::class)
internal class SaveSearchToRecentsTest {

private val newRecentSearchDao: NewRecentSearchDao = mockk()
private val searchListItem = RecentSearchListItem("", ZimFileReader.CONTENT_PREFIX)

private val activity: AppCompatActivity = mockk()
private val viewModelScope = CoroutineScope(Dispatchers.IO)
private val testDispatcher = TestScope()

@Test
fun `invoke with null Id does nothing`() {
SaveSearchToRecents(
newRecentSearchDao,
searchListItem,
null,
viewModelScope
testDispatcher
).invokeWith(
activity
)
verify { newRecentSearchDao wasNot Called }
}

@Test
fun `invoke with non null Id saves search`() {
fun `invoke with non null Id saves search`() = testDispatcher.runTest {
val id = "id"
SaveSearchToRecents(
newRecentSearchDao,
searchListItem,
id,
viewModelScope
testDispatcher
).invokeWith(activity)
testDispatcher.advanceUntilIdle()
verify { newRecentSearchDao.saveSearch(searchListItem.value, id, ZimFileReader.CONTENT_PREFIX) }
}
}

0 comments on commit 3f19f55

Please sign in to comment.