@@ -6,13 +6,15 @@ import fr.free.nrw.commons.contributions.Contribution
6
6
import fr.free.nrw.commons.filepicker.UploadableFile
7
7
import fr.free.nrw.commons.kvstore.JsonKvStore
8
8
import fr.free.nrw.commons.repository.UploadRepository
9
+ import fr.free.nrw.commons.upload.ImageCoordinates
9
10
import io.reactivex.Observable
10
11
import org.junit.Before
11
12
import org.junit.Test
12
13
import org.mockito.ArgumentMatchers
13
14
import org.mockito.InjectMocks
14
15
import org.mockito.Mock
15
16
import org.mockito.Mockito.`when`
17
+ import org.mockito.Mockito.times
16
18
import org.mockito.MockitoAnnotations
17
19
import java.util.*
18
20
@@ -38,10 +40,16 @@ class UploadPresenterTest {
38
40
@Mock
39
41
private lateinit var anotherUploadableFile: UploadableFile
40
42
43
+ @Mock
44
+ private lateinit var imageCoords: ImageCoordinates
45
+ @Mock
46
+ private lateinit var uploadItem: UploadItem
47
+
41
48
@InjectMocks
42
49
lateinit var uploadPresenter: UploadPresenter
43
50
44
51
private var uploadableFiles: ArrayList <UploadableFile > = ArrayList ()
52
+ private var uploadableItems: ArrayList <UploadItem > = ArrayList ()
45
53
46
54
/* *
47
55
* initial setup, test environment
@@ -70,6 +78,45 @@ class UploadPresenterTest {
70
78
verify(repository).buildContributions()
71
79
}
72
80
81
+ @Test
82
+ fun handleSubmitImagesNoLocationWithConsecutiveNoLocationUploads () {
83
+ `when `(imageCoords.imageCoordsExists).thenReturn(false )
84
+ `when `(uploadItem.getGpsCoords()).thenReturn(imageCoords)
85
+ `when `(repository.uploads).thenReturn(uploadableItems)
86
+ uploadableItems.add(uploadItem)
87
+
88
+ // test 1 - insufficient count
89
+ `when `(
90
+ defaultKvStore.getInt(UploadPresenter .COUNTER_OF_CONSECUTIVE_UPLOADS_WITHOUT_COORDINATES , 0 ))
91
+ .thenReturn(UploadPresenter .CONSECUTIVE_UPLOADS_WITHOUT_COORDINATES_REMINDER_THRESHOLD - 1 )
92
+ uploadPresenter.handleSubmit()
93
+ // no alert dialog expected as insufficient consecutive count
94
+ verify(view, times(0 )).showAlertDialog(ArgumentMatchers .anyInt(), ArgumentMatchers .any<Runnable >())
95
+
96
+ // test 2 - sufficient count
97
+ `when `(
98
+ defaultKvStore.getInt(UploadPresenter .COUNTER_OF_CONSECUTIVE_UPLOADS_WITHOUT_COORDINATES , 0 ))
99
+ .thenReturn(UploadPresenter .CONSECUTIVE_UPLOADS_WITHOUT_COORDINATES_REMINDER_THRESHOLD )
100
+ uploadPresenter.handleSubmit()
101
+ // alert dialog expected as consecutive count is at threshold
102
+ verify(view).showAlertDialog(ArgumentMatchers .anyInt(), ArgumentMatchers .any<Runnable >())
103
+ }
104
+
105
+ @Test
106
+ fun handleSubmitImagesWithLocationWithConsecutiveNoLocationUploads () {
107
+ `when `(
108
+ defaultKvStore.getInt(UploadPresenter .COUNTER_OF_CONSECUTIVE_UPLOADS_WITHOUT_COORDINATES , 0 ))
109
+ .thenReturn(UploadPresenter .CONSECUTIVE_UPLOADS_WITHOUT_COORDINATES_REMINDER_THRESHOLD )
110
+ `when `(imageCoords.imageCoordsExists).thenReturn(true )
111
+ `when `(uploadItem.getGpsCoords()).thenReturn(imageCoords)
112
+ `when `(repository.uploads).thenReturn(uploadableItems)
113
+ uploadableItems.add(uploadItem)
114
+ uploadPresenter.handleSubmit()
115
+ // no alert dialog expected
116
+ verify(view, times(0 ))
117
+ .showAlertDialog(ArgumentMatchers .anyInt(), ArgumentMatchers .any<Runnable >())
118
+ }
119
+
73
120
@Test
74
121
fun handleSubmitTestUserLoggedInAndLimitedConnectionOn () {
75
122
`when `(
0 commit comments