@@ -2,13 +2,15 @@ package fr.free.nrw.commons.category
22
33import categoryItem
44import com.nhaarman.mockitokotlin2.mock
5+ import com.nhaarman.mockitokotlin2.verify
56import com.nhaarman.mockitokotlin2.whenever
67import depictedItem
78import fr.free.nrw.commons.upload.GpsCategoryModel
89import io.reactivex.Single
910import io.reactivex.subjects.BehaviorSubject
1011import org.junit.Before
1112import org.junit.Test
13+ import org.mockito.ArgumentMatchers
1214import org.mockito.Mock
1315import org.mockito.MockitoAnnotations
1416
@@ -27,38 +29,58 @@ class CategoriesModelTest {
2729 MockitoAnnotations .initMocks(this )
2830 }
2931
30- // Test Case for verifying that Categories search (MW api calls) are case-insensitive
32+ // Test Case for verifying that Categories search (MW api calls)
3133 @Test
3234 fun searchAllFoundCaseTest () {
3335 val categoriesModel = CategoriesModel (categoryClient, mock(), mock())
3436
3537 val expectedList = listOf (" Test" )
36- whenever(categoryClient.searchCategoriesForPrefix(" tes" , 25 ))
38+ whenever(
39+ categoryClient.searchCategoriesForPrefix(
40+ ArgumentMatchers .anyString(),
41+ ArgumentMatchers .anyInt(),
42+ ArgumentMatchers .anyInt()
43+ )
44+ )
3745 .thenReturn(Single .just(expectedList))
3846
3947 // Checking if both return "Test"
4048 val expectedItems = expectedList.map { CategoryItem (it, false ) }
41- categoriesModel.searchAll(" tes" , emptyList(), emptyList())
49+ var categoryTerm = " Test"
50+ categoriesModel.searchAll(categoryTerm, emptyList(), emptyList())
4251 .test()
4352 .assertValues(expectedItems)
4453
45- categoriesModel.searchAll(" Tes" , emptyList(), emptyList())
54+ verify(categoryClient).searchCategoriesForPrefix(
55+ categoryTerm,
56+ CategoriesModel .SEARCH_CATS_LIMIT
57+ )
58+
59+ categoriesModel.searchAll(categoryTerm, emptyList(), emptyList())
4660 .test()
4761 .assertValues(expectedItems)
4862 }
4963
64+
5065 @Test
5166 fun `searchAll with empty search terms creates results from gps, title search & recents` () {
5267 val gpsCategoryModel: GpsCategoryModel = mock()
5368 val depictedItem = depictedItem(commonsCategories = listOf (" depictionCategory" ))
5469
5570 whenever(gpsCategoryModel.categoriesFromLocation)
5671 .thenReturn(BehaviorSubject .createDefault(listOf (" gpsCategory" )))
57- whenever(categoryClient.searchCategories(" tes" , 25 ))
72+ whenever(
73+ categoryClient.searchCategories(
74+ ArgumentMatchers .anyString(),
75+ ArgumentMatchers .anyInt(),
76+ ArgumentMatchers .anyInt()
77+ )
78+ )
5879 .thenReturn(Single .just(listOf (" titleSearch" )))
5980 whenever(categoryDao.recentCategories(25 )).thenReturn(listOf (" recentCategories" ))
81+ val imageTitleList = listOf (" Test" )
6082 CategoriesModel (categoryClient, categoryDao, gpsCategoryModel)
61- .searchAll(" " , listOf ( " tes " ) , listOf (depictedItem))
83+ .searchAll(" " , imageTitleList , listOf (depictedItem))
6284 .test()
6385 .assertValue(
6486 listOf (
@@ -68,5 +90,8 @@ class CategoriesModelTest {
6890 categoryItem(" recentCategories" )
6991 )
7092 )
93+ imageTitleList.forEach {
94+ verify(categoryClient).searchCategories(it, CategoriesModel .SEARCH_CATS_LIMIT )
95+ }
7196 }
7297}
0 commit comments