From 88bb1d87cad27537ac75f5bab87f49ba7d5dc068 Mon Sep 17 00:00:00 2001 From: Ashish Kumar Date: Sat, 30 Nov 2019 19:13:07 +0530 Subject: [PATCH] Added more unit tests to UploadPresenter (#3250) * Added more unit tests to UploadPresenter * added method comments --- .../nrw/commons/upload/UploadPresenterTest.kt | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadPresenterTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadPresenterTest.kt index bef677fd5c..322b31f82d 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadPresenterTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadPresenterTest.kt @@ -30,6 +30,9 @@ class UploadPresenterTest { @Mock private lateinit var uploadableFile: UploadableFile + @Mock + private lateinit var anotherUploadableFile: UploadableFile + @InjectMocks var uploadPresenter: UploadPresenter? = null @@ -44,7 +47,6 @@ class UploadPresenterTest { MockitoAnnotations.initMocks(this) uploadPresenter?.onAttachView(view) `when`(repository?.buildContributions()).thenReturn(Observable.just(contribution)) - `when`(view?.isLoggedIn).thenReturn(true) uploadableFiles.add(uploadableFile) `when`(view?.uploadableFiles).thenReturn(uploadableFiles) `when`(uploadableFile?.filePath).thenReturn("data://test") @@ -54,7 +56,8 @@ class UploadPresenterTest { * unit test case for method UploadPresenter.handleSubmit */ @Test - fun handleSubmitTest() { + fun handleSubmitTestUserLoggedIn() { + `when`(view?.isLoggedIn).thenReturn(true) uploadPresenter?.handleSubmit() verify(view)?.isLoggedIn verify(view)?.showProgress(true) @@ -63,13 +66,57 @@ class UploadPresenterTest { } /** - * unit test for UploadMediaPresenter.deletePictureAtIndex + * unit test case for method UploadPresenter.handleSubmit + */ + @Test + fun handleSubmitTestUserNotLoggedIn() { + `when`(view?.isLoggedIn).thenReturn(false) + uploadPresenter?.handleSubmit() + verify(view)?.isLoggedIn + verify(view)?.askUserToLogIn() + + } + + private fun deletePictureBaseTest(){ + uploadableFiles.clear() + } + + /** + * Test which asserts If the next fragment to be shown is not one of the MediaDetailsFragment, lets hide the top card */ @Test - fun deletePictureAtIndexTest() { + fun hideTopCardWhenReachedTheLastFile(){ + deletePictureBaseTest() + uploadableFiles.add(uploadableFile) uploadPresenter?.deletePictureAtIndex(0) + verify(view)?.showHideTopCard(false) + verify(repository)?.deletePicture(ArgumentMatchers.anyString()) + } + + /** + * Test media deletion during single upload + */ + @Test + fun testDeleteWhenSingleUpload(){ + deletePictureBaseTest() + uploadableFiles.add(uploadableFile) + uploadPresenter?.deletePictureAtIndex(0) + verify(view)?.showHideTopCard(false) verify(repository)?.deletePicture(ArgumentMatchers.anyString()) verify(view)?.showMessage(ArgumentMatchers.anyInt())//As there is only one while which we are asking for deletion, upload should be cancelled and this flow should be triggered verify(view)?.finish() } + + /** + * Test media deletion during multiple upload + */ + @Test + fun testDeleteWhenMultipleFilesUpload(){ + deletePictureBaseTest() + uploadableFiles.add(uploadableFile) + uploadableFiles.add(anotherUploadableFile) + uploadPresenter?.deletePictureAtIndex(0) + verify(view)?.onUploadMediaDeleted(0) + verify(view)?.updateTopCardTitle() + } } \ No newline at end of file