Skip to content

Commit 88bb1d8

Browse files
ashishkumar468maskaravivek
authored andcommitted
Added more unit tests to UploadPresenter (commons-app#3250)
* Added more unit tests to UploadPresenter * added method comments
1 parent 3206747 commit 88bb1d8

File tree

1 file changed

+51
-4
lines changed

1 file changed

+51
-4
lines changed

app/src/test/kotlin/fr/free/nrw/commons/upload/UploadPresenterTest.kt

+51-4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ class UploadPresenterTest {
3030
@Mock
3131
private lateinit var uploadableFile: UploadableFile
3232

33+
@Mock
34+
private lateinit var anotherUploadableFile: UploadableFile
35+
3336
@InjectMocks
3437
var uploadPresenter: UploadPresenter? = null
3538

@@ -44,7 +47,6 @@ class UploadPresenterTest {
4447
MockitoAnnotations.initMocks(this)
4548
uploadPresenter?.onAttachView(view)
4649
`when`(repository?.buildContributions()).thenReturn(Observable.just(contribution))
47-
`when`(view?.isLoggedIn).thenReturn(true)
4850
uploadableFiles.add(uploadableFile)
4951
`when`(view?.uploadableFiles).thenReturn(uploadableFiles)
5052
`when`(uploadableFile?.filePath).thenReturn("data://test")
@@ -54,7 +56,8 @@ class UploadPresenterTest {
5456
* unit test case for method UploadPresenter.handleSubmit
5557
*/
5658
@Test
57-
fun handleSubmitTest() {
59+
fun handleSubmitTestUserLoggedIn() {
60+
`when`(view?.isLoggedIn).thenReturn(true)
5861
uploadPresenter?.handleSubmit()
5962
verify(view)?.isLoggedIn
6063
verify(view)?.showProgress(true)
@@ -63,13 +66,57 @@ class UploadPresenterTest {
6366
}
6467

6568
/**
66-
* unit test for UploadMediaPresenter.deletePictureAtIndex
69+
* unit test case for method UploadPresenter.handleSubmit
70+
*/
71+
@Test
72+
fun handleSubmitTestUserNotLoggedIn() {
73+
`when`(view?.isLoggedIn).thenReturn(false)
74+
uploadPresenter?.handleSubmit()
75+
verify(view)?.isLoggedIn
76+
verify(view)?.askUserToLogIn()
77+
78+
}
79+
80+
private fun deletePictureBaseTest(){
81+
uploadableFiles.clear()
82+
}
83+
84+
/**
85+
* Test which asserts If the next fragment to be shown is not one of the MediaDetailsFragment, lets hide the top card
6786
*/
6887
@Test
69-
fun deletePictureAtIndexTest() {
88+
fun hideTopCardWhenReachedTheLastFile(){
89+
deletePictureBaseTest()
90+
uploadableFiles.add(uploadableFile)
7091
uploadPresenter?.deletePictureAtIndex(0)
92+
verify(view)?.showHideTopCard(false)
93+
verify(repository)?.deletePicture(ArgumentMatchers.anyString())
94+
}
95+
96+
/**
97+
* Test media deletion during single upload
98+
*/
99+
@Test
100+
fun testDeleteWhenSingleUpload(){
101+
deletePictureBaseTest()
102+
uploadableFiles.add(uploadableFile)
103+
uploadPresenter?.deletePictureAtIndex(0)
104+
verify(view)?.showHideTopCard(false)
71105
verify(repository)?.deletePicture(ArgumentMatchers.anyString())
72106
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
73107
verify(view)?.finish()
74108
}
109+
110+
/**
111+
* Test media deletion during multiple upload
112+
*/
113+
@Test
114+
fun testDeleteWhenMultipleFilesUpload(){
115+
deletePictureBaseTest()
116+
uploadableFiles.add(uploadableFile)
117+
uploadableFiles.add(anotherUploadableFile)
118+
uploadPresenter?.deletePictureAtIndex(0)
119+
verify(view)?.onUploadMediaDeleted(0)
120+
verify(view)?.updateTopCardTitle()
121+
}
75122
}

0 commit comments

Comments
 (0)