From 539d760b59d00b36e533af42bea80c20f0c23159 Mon Sep 17 00:00:00 2001 From: Ashish Date: Sat, 30 Nov 2019 19:27:38 +0530 Subject: [PATCH] Added more unit tests to UploadMediaPresenterTest --- .../mediaDetails/UploadMediaPresenter.java | 2 +- .../upload/UploadMediaPresenterTest.kt | 78 +++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java index 3cccfe89da..0654c4ea26 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java @@ -160,7 +160,7 @@ public void handleImageResult(Integer imageResult) { * * @param errorCode */ - private void handleBadImage(Integer errorCode) { + public void handleBadImage(Integer errorCode) { Timber.d("Handle bad picture with error code %d", errorCode); if (errorCode >= 8) { // If location of image and nearby does not match, then set shared preferences to disable wikidata edits diff --git a/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadMediaPresenterTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadMediaPresenterTest.kt index 1887857578..14c36d25be 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadMediaPresenterTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadMediaPresenterTest.kt @@ -12,6 +12,7 @@ import io.reactivex.schedulers.TestScheduler import org.junit.Before import org.junit.Test import org.mockito.ArgumentMatchers +import org.mockito.ArgumentMatchers.eq import org.mockito.Mock import org.mockito.Mockito import org.mockito.Mockito.verify @@ -38,6 +39,12 @@ class UploadMediaPresenterTest { @Mock private var uploadItem: UploadModel.UploadItem? = null + @Mock + private var title: Title? = null + + @Mock + private var descriptions: List? = null + private var testObservableUploadItem: Observable? = null private var testSingleImageResult: Single? = null @@ -107,4 +114,75 @@ class UploadMediaPresenterTest { } + /** + * Test fetch previous image title when there was one + */ + @Test + fun fetchPreviousImageAndTitleTestPositive(){ + Mockito.`when`(repository?.getPreviousUploadItem(ArgumentMatchers.anyInt())).thenReturn(uploadItem) + Mockito.`when`(uploadItem?.descriptions).thenReturn(descriptions) + Mockito.`when`(uploadItem?.title).thenReturn(title) + Mockito.`when`(title?.titleText).thenReturn(ArgumentMatchers.anyString()) + + uploadMediaPresenter?.fetchPreviousTitleAndDescription(0) + verify(view)?.setTitleAndDescription(ArgumentMatchers.anyString(),ArgumentMatchers.any()) + } + + /** + * Test fetch previous image title when there was none + */ + @Test + fun fetchPreviousImageAndTitleTestNegative(){ + Mockito.`when`(repository?.getPreviousUploadItem(ArgumentMatchers.anyInt())).thenReturn(null) + uploadMediaPresenter?.fetchPreviousTitleAndDescription(0) + verify(view)?.showMessage(ArgumentMatchers.anyInt(),ArgumentMatchers.anyInt()) + } + + /** + * Test bad image invalid location + */ + @Test + fun handleBadImageBaseTestInvalidLocation(){ + uploadMediaPresenter?.handleBadImage(8) + verify(repository)?.saveValue(ArgumentMatchers.anyString(),eq(false)) + verify(view)?.showBadImagePopup(8) + } + + /** + * Test bad image empty title + */ + @Test + fun handleBadImageBaseTestEmptyTitle(){ + uploadMediaPresenter?.handleBadImage(-3) + verify(view)?.showMessage(ArgumentMatchers.anyInt(),ArgumentMatchers.anyInt()) + } + + /** + * Teste show file already exists + */ + @Test + fun handleBadImageBaseTestFileNameExists(){ + uploadMediaPresenter?.handleBadImage(-4) + verify(view)?.showDuplicatePicturePopup() + } + + + /** + * Test show SimilarImageFragment + */ + @Test + fun showSimilarImageFragmentTest(){ + uploadMediaPresenter?.showSimilarImageFragment(ArgumentMatchers.anyString(),ArgumentMatchers.anyString()) + verify(view)?.showSimilarImageFragment(ArgumentMatchers.anyString(),ArgumentMatchers.anyString()) + } + + /** + * Test set upload item + */ + @Test + fun setUploadItemTest(){ + uploadMediaPresenter?.setUploadItem(0,uploadItem) + verify(repository)?.updateUploadItem(0,uploadItem) + } + } \ No newline at end of file