From 561af8f735ba0e6e65ecca9bd32c0f4a77b86ebd Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Wed, 29 Jan 2025 15:49:08 +0530 Subject: [PATCH] Added UI test cases for testing these both scenarios. --- .../kiwixmobile/note/NoteFragmentTest.kt | 77 ++++++++++++++----- .../org/kiwix/kiwixmobile/note/NoteRobot.kt | 10 +++ 2 files changed, 68 insertions(+), 19 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt index 4ee3c042af..f7ce9e36b4 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt @@ -129,17 +129,7 @@ class NoteFragmentTest : BaseActivityTest() { @Test fun testUserCanSeeNotesForDeletedFiles() { - // delete the notes if any saved to properly run the test scenario - note { - openNoteFragment() - assertToolbarExist() - assertNoteRecyclerViewExist() - clickOnTrashIcon() - assertDeleteNoteDialogDisplayed() - clickOnDeleteButton() - assertNoNotesTextDisplayed() - pressBack() - } + deletePreviouslySavedNotes() loadZimFileInReader("testzim.zim") StandardActions.closeDrawer() // close the drawer if open before running the test cases. note { @@ -188,20 +178,33 @@ class NoteFragmentTest : BaseActivityTest() { @Test fun testZimFileOpenedAfterOpeningNoteOnNotesScreen() { - // delete the notes if any saved to properly run the test scenario + deletePreviouslySavedNotes() + loadZimFileInReader("testzim.zim") note { + assertHomePageIsLoadedOfTestZimFile() + clickOnNoteMenuItem(context) + assertNoteDialogDisplayed() + writeDemoNote() + saveNote() + pressBack() openNoteFragment() assertToolbarExist() assertNoteRecyclerViewExist() - clickOnTrashIcon() - assertDeleteNoteDialogDisplayed() - clickOnDeleteButton() - assertNoNotesTextDisplayed() + clickOnSavedNote() + clickOnOpenNote() + assertNoteSaved() + // to close the note dialog. + pressBack() + // to close the notes fragment. pressBack() } + } + + @Test + fun testNoteEntryIsRemovedFromDatabaseWhenDeletedInAddNoteDialog() { + deletePreviouslySavedNotes() loadZimFileInReader("testzim.zim") note { - assertHomePageIsLoadedOfTestZimFile() clickOnNoteMenuItem(context) assertNoteDialogDisplayed() writeDemoNote() @@ -213,9 +216,45 @@ class NoteFragmentTest : BaseActivityTest() { clickOnSavedNote() clickOnOpenNote() assertNoteSaved() - // to close the note dialog. + clickOnDeleteIcon() pressBack() - // to close the notes fragment. + assertNoNotesTextDisplayed() + } + } + + @Test + fun testNoteFileIsDeletedWhenNoteIsRemovedFromNotesScreen() { + deletePreviouslySavedNotes() + loadZimFileInReader("testzim.zim") + // Save a note. + note { + clickOnNoteMenuItem(context) + assertNoteDialogDisplayed() + writeDemoNote() + saveNote() + pressBack() + } + // Delete that note from "Note" screen. + deletePreviouslySavedNotes() + // Test the note file is deleted or not. + note { + clickOnNoteMenuItem(context) + assertNoteDialogDisplayed() + assertNotDoesNotExist() + pressBack() + } + } + + private fun deletePreviouslySavedNotes() { + // delete the notes if any saved to properly run the test scenario + note { + openNoteFragment() + assertToolbarExist() + assertNoteRecyclerViewExist() + clickOnTrashIcon() + assertDeleteNoteDialogDisplayed() + clickOnDeleteButton() + assertNoNotesTextDisplayed() pressBack() } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteRobot.kt index 9131edba55..9a5659c5c7 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteRobot.kt @@ -26,6 +26,7 @@ import androidx.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu import androidx.test.espresso.action.ViewActions.clearText import androidx.test.espresso.action.ViewActions.click import androidx.test.espresso.action.ViewActions.typeText +import androidx.test.espresso.assertion.ViewAssertions.doesNotExist import androidx.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition import androidx.test.espresso.matcher.ViewMatchers import androidx.test.espresso.matcher.ViewMatchers.withContentDescription @@ -111,6 +112,15 @@ class NoteRobot : BaseRobot() { testFlakyView({ isVisible(Text(noteText)) }) } + fun assertNotDoesNotExist() { + testFlakyView({ onView(withText(noteText)).check(doesNotExist()) }) + } + + fun clickOnDeleteIcon() { + pauseForBetterTestPerformance() + testFlakyView({ clickOn(ViewId(R.id.delete_note)) }) + } + fun clickOnTrashIcon() { testFlakyView({ onView(withContentDescription(R.string.pref_clear_notes)).perform(click()) }) }