1
1
package fr.free.nrw.commons.mwapi
2
2
3
- import android.os.Build
4
3
import com.google.gson.Gson
5
4
import fr.free.nrw.commons.BuildConfig
6
5
import fr.free.nrw.commons.TestCommonsApplication
7
6
import fr.free.nrw.commons.kvstore.JsonKvStore
8
- import fr.free.nrw.commons.utils.ConfigUtils
7
+ import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient.mapType
9
8
import junit.framework.Assert.assertEquals
10
9
import okhttp3.HttpUrl
11
10
import okhttp3.OkHttpClient
@@ -18,11 +17,10 @@ import org.junit.Before
18
17
import org.junit.Test
19
18
import org.junit.runner.RunWith
20
19
import org.mockito.Mockito
20
+ import org.mockito.Mockito.`when`
21
21
import org.robolectric.RobolectricTestRunner
22
- import org.robolectric.RuntimeEnvironment
23
22
import org.robolectric.annotation.Config
24
23
import java.net.URLDecoder
25
- import java.util.*
26
24
27
25
@RunWith(RobolectricTestRunner ::class )
28
26
@Config(constants = BuildConfig ::class , sdk = [23 ], application = TestCommonsApplication ::class )
@@ -59,21 +57,20 @@ class OkHttpJsonApiClientTest {
59
57
@Test
60
58
fun getCategoryImages () {
61
59
server.enqueue(getFirstPageOfImages())
62
- val categoryImages = testObject.getCategoryImages(" Watercraft moored off shore" )
60
+ val categoryImages = testObject.getCategoryImages(" Watercraft moored off shore" )!! .blockingGet()
63
61
64
62
assertBasicRequestParameters(server, " GET" ).let { request ->
65
63
parseQueryParams(request).let { body ->
66
- Assert .assertEquals(" format " , body[" json " ])
64
+ Assert .assertEquals(" json " , body[" format " ])
67
65
Assert .assertEquals(" query" , body[" action" ])
68
- Assert .assertEquals(" generator" , body[" categorymembers" ])
69
- Assert .assertEquals(" gcmtype" , body[" file" ])
70
- Assert .assertEquals(" gcmtitle" , body[" Watercraft moored off shore" ])
71
- Assert .assertEquals(" gcmsort" , body[" timestamp" ])
72
- Assert .assertEquals(" gcmdir" , body[" desc" ])
73
- Assert .assertEquals(" gcmlimit" , body[" 2" ])
66
+ Assert .assertEquals(" categorymembers" , body[" generator" ])
67
+ Assert .assertEquals(" file" , body[" gcmtype" ])
68
+ Assert .assertEquals(" Watercraft moored off shore" , body[" gcmtitle" ])
69
+ Assert .assertEquals(" timestamp" , body[" gcmsort" ])
70
+ Assert .assertEquals(" desc" , body[" gcmdir" ])
74
71
}
75
72
}
76
- assertEquals(categoryImages!! .blockingGet() .size, 2 )
73
+ assertEquals(categoryImages.size, 2 )
77
74
}
78
75
79
76
private fun getFirstPageOfImages (): MockResponse {
@@ -94,51 +91,48 @@ class OkHttpJsonApiClientTest {
94
91
fun getCategoryImagesWithContinue () {
95
92
server.enqueue(getFirstPageOfImages())
96
93
server.enqueue(getSecondPageOfImages())
97
- val categoryImages = testObject.getCategoryImages(" Watercraft moored off shore" )
94
+ val categoryImages = testObject.getCategoryImages(" Watercraft moored off shore" )!! .blockingGet()
98
95
99
96
assertBasicRequestParameters(server, " GET" ).let { request ->
100
97
parseQueryParams(request).let { body ->
101
- Assert .assertEquals(" format " , body[" json " ])
98
+ Assert .assertEquals(" json " , body[" format " ])
102
99
Assert .assertEquals(" query" , body[" action" ])
103
- Assert .assertEquals(" generator" , body[" categorymembers" ])
104
- Assert .assertEquals(" gcmtype" , body[" file" ])
105
- Assert .assertEquals(" gcmtitle" , body[" Watercraft moored off shore" ])
106
- Assert .assertEquals(" gcmsort" , body[" timestamp" ])
107
- Assert .assertEquals(" gcmdir" , body[" desc" ])
108
- Assert .assertEquals(" gcmlimit" , body[" 2" ])
100
+ Assert .assertEquals(" categorymembers" , body[" generator" ])
101
+ Assert .assertEquals(" file" , body[" gcmtype" ])
102
+ Assert .assertEquals(" Watercraft moored off shore" , body[" gcmtitle" ])
103
+ Assert .assertEquals(" timestamp" , body[" gcmsort" ])
104
+ Assert .assertEquals(" desc" , body[" gcmdir" ])
109
105
}
110
106
}
111
107
112
- assertEquals(categoryImages!! .blockingGet() .size, 2 )
108
+ assertEquals(categoryImages.size, 2 )
113
109
114
- val categoryImagesContinued = testObject.getCategoryImages(" Watercraft moored off shore" )
110
+ `when `(sharedPreferences.getJson<HashMap <String , String >>(" query_continue_Watercraft moored off shore" , mapType))
111
+ .thenReturn(hashMapOf(Pair (" gcmcontinue" , " testvalue" ), Pair (" continue" , " gcmcontinue||" )))
112
+
113
+
114
+ val categoryImagesContinued = testObject.getCategoryImages(" Watercraft moored off shore" )!! .blockingGet()
115
115
116
116
assertBasicRequestParameters(server, " GET" ).let { request ->
117
117
parseQueryParams(request).let { body ->
118
- Assert .assertEquals(" format " , body[" json " ])
118
+ Assert .assertEquals(" json " , body[" format " ])
119
119
Assert .assertEquals(" query" , body[" action" ])
120
- Assert .assertEquals(" generator" , body[" categorymembers" ])
121
- Assert .assertEquals(" gcmtype" , body[" file" ])
122
- Assert .assertEquals(" gcmtitle" , body[" Watercraft moored off shore" ])
123
- Assert .assertEquals(" gcmsort" , body[" timestamp" ])
124
- Assert .assertEquals(" gcmdir" , body[" desc" ])
125
- Assert .assertEquals(" gcmlimit" , body[" 2" ])
126
- Assert .assertEquals(" gcmcontinue" , body[" testvalue" ])
127
- Assert .assertEquals(" continue" , body[" gcmcontinue||" ])
120
+ Assert .assertEquals(" categorymembers" , body[" generator" ])
121
+ Assert .assertEquals(" file" , body[" gcmtype" ])
122
+ Assert .assertEquals(" Watercraft moored off shore" , body[" gcmtitle" ])
123
+ Assert .assertEquals(" timestamp" , body[" gcmsort" ])
124
+ Assert .assertEquals(" desc" , body[" gcmdir" ])
125
+ Assert .assertEquals(" testvalue" , body[" gcmcontinue" ])
126
+ Assert .assertEquals(" gcmcontinue||" , body[" continue" ])
128
127
}
129
128
}
130
129
131
- assertEquals(categoryImagesContinued!! .blockingGet() .size, 2 )
130
+ assertEquals(categoryImagesContinued.size, 2 )
132
131
}
133
132
134
133
private fun assertBasicRequestParameters (server : MockWebServer , method : String ): RecordedRequest = server.takeRequest().let {
135
134
Assert .assertEquals(" /" , it.requestUrl.encodedPath())
136
135
Assert .assertEquals(method, it.method)
137
- Assert .assertEquals(" Commons/${ConfigUtils .getVersionNameWithSha(RuntimeEnvironment .application)} (https://mediawiki.org/wiki/Apps/Commons) Android/${Build .VERSION .RELEASE } " ,
138
- it.getHeader(" User-Agent" ))
139
- if (" POST" == method) {
140
- Assert .assertEquals(" application/x-www-form-urlencoded" , it.getHeader(" Content-Type" ))
141
- }
142
136
return it
143
137
}
144
138
0 commit comments